致命错误:在PHP5.4上运行的旧PHP5.1代码上对非对象调用成员函数fetch()
我有一段在PHP 5.1时代编写的旧代码,我正在尝试让它在运行php5.4的较新服务器上运行,但是我从下面的代码中得到了这个错误: 致命错误:对非对象调用成员函数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
/**
* <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文件的部分!我非常愿意让人访问这个软件,看看它是否可以修复,并且很乐意支付一笔费用如果有人感兴趣,请付费?