致命错误:在PHP5.4上运行的旧PHP5.1代码上对非对象调用成员函数fetch()

致命错误:在PHP5.4上运行的旧PHP5.1代码上对非对象调用成员函数fetch(),php,fetch,Php,Fetch,我有一段在PHP 5.1时代编写的旧代码,我正在尝试让它在运行php5.4的较新服务器上运行,但是我从下面的代码中得到了这个错误: 致命错误:对非对象调用成员函数fetch() <?php /** * <b>Database Connection</b> class. * @author Php Object Generator * @version 3.0 / PHP5.1 * @see http://www.phpobjectgenerator.com/ * @

我有一段在PHP 5.1时代编写的旧代码,我正在尝试让它在运行php5.4的较新服务器上运行,但是我从下面的代码中得到了这个错误:

致命错误:对非对象调用成员函数fetch()

<?php
/**
* <b>Database Connection</b> class.
* @author Php Object Generator
* @version 3.0 / PHP5.1
* @see http://www.phpobjectgenerator.com/
* @copyright Free for personal & commercial use. (Offered under the BSD license)
*/
Class Database
{
private function Database()
{
    $databaseName = $GLOBALS['configuration']['db'];
    $driver = $GLOBALS['configuration']['pdoDriver'];
    $serverName = $GLOBALS['configuration']['host'];
    $databaseUser = $GLOBALS['configuration']['user'];
    $databasePassword = $GLOBALS['configuration']['pass'];
    $databasePort = $GLOBALS['configuration']['port'];


    $databaseName = 'bitbsoft_butlers';
    $driver = $GLOBALS['configuration']['pdoDriver'];
    $serverName = 'localhost';
    $databaseUser = 'bitbsoft_butlers';
    $databasePassword = 'Sherw00d123';
    $databasePort = '3306'; 



    if (!isset($this->connection))
    {
        $this->connection = new PDO($driver.':host='.$serverName.';port='.$databasePort.';dbname='.$databaseName, $databaseUser, $databasePassword);
        $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    if (!$this->connection)
    {
        throw new Exception('I cannot connect to the database. Please edit configuration.php with your database configuration.');
    } 
}

public static function Connect()
{
    static $database = null;
    if (!isset($database))
    {
        $database = new Database();
    }
    return $database->connection;
}

public static function Reader($query, $connection)
{
    try
    {
        $result = $connection->Query($query);
    }
    catch(PDOException $e)
    {
        return false;
    }
    return $result;
}

public static function Read($result)
{
    try
    {
        return $result->fetch();
    }
    catch (PDOException $e)
    {
        return false;
    }
}

public static function NonQuery($query, $connection)
{
    try
    {
        $r = $connection->query($query);
        if ($r === false)
        {
            return 0;
        }
        return $r->rowCount();
    }
    catch (PDOException $e)
    {
        return false;
    }

}

public static function Query($query, $connection)
{
    try
    {
        $i = 0;
        $r = $connection->query($query);
        foreach ($r as $row)
        {
            $i++;
        }
        return  $i;
    }
    catch (PDOException $e)
    {
        return false;
    }
}

public static function InsertOrUpdate($query, $connection)
{
    try
    {
        $r = $connection->query($query);
        return $connection->lastInsertId();
    }
    catch (PDOException $e)
    {
        return false;
    }
}
}
?>

现在,这个错误是由line fetch()抛出的,但我不清楚是什么从5.1更改为5.4会导致这个错误,我非常感谢您在这方面的帮助


非常感谢

,因为您通常调用fetch的唯一一行是在您向我们展示的代码中没有执行的函数中:请给出a)发生错误的那一行和b)完整的代码?“在非对象上”表示$result不是对象。正在传递给Read()的是什么?抱歉,剪切和粘贴错误,以下是完整的代码。错误inc的行号是致命错误:在第68行的/home/bitbsoft/public_html/objects/class.database.php中对非对象调用成员函数fetch(),实际调用
Read
的行仍然缺失(哦,顺便说一句,大多数编码约定告诉您函数使用小写名称,而类使用大写名称)有一个clientdisplay.php,它是用来产生错误的页面,这会根据错误调用上面的代码,因此我假设
read
来自那里。但是它的顶部有13个包含php文件的部分!我非常愿意让人访问这个软件,看看它是否可以修复,并且很乐意支付一笔费用如果有人感兴趣,请付费?