我一直在看这段代码已经很久了,我无法真正理解它对我的要求。无论我尝试什么,我都会收到相同的错误消息,而且我通过其他线程查看无效。错误是致命错误:在第63行的C:\ wamp \ www \ new_serverside \ sprint1.php中的非对象上调用成员函数prepare()。我的代码是:
<?php
include 'ConfigDB.php';
?>
<?php
if(getConnection())
{
echo "Server connection successful";
}
else
{
echo "Problem with connection";
}
ini_set('display_errors', 1);
global $dbh;
$query = $dbh->prepare("SELECT * FROM faculty");
$query->execute();
$result = $dbh->query($query);
foreach($result as $row)
{
echo $row['Name'] . "<br/>";
}
?>
答案 0 :(得分:0)
在全局引用之后调用$ dbh上的var_dump()。
var_dump($dbh);
你应该在那里找到一些不符合你期望的东西。
答案 1 :(得分:0)
错误表示$dbh
不是对象,因此您无法在其上调用prepare()
方法。 $dbh
在哪里初始化?在调用var_dump($dbh);
之前尝试执行prepare()
以查看该变量中的内容。
答案 2 :(得分:0)
错误听起来像$dbh
没有正确初始化。您可以使用singleton class而不是全局变量来确保将来不会发生。
class DB {
private $instance = NULL;
private __construct() {
// create an instance of your db handler
}
public static getInstance() {
if (!$this->instance)
$this->instance = new DB();
return $this->instance;
}
}
并在您的代码中使用它
$dbh = DB::getInstance();