致命错误:调用成员函数prepare()

时间:2013-11-21 23:39:10

标签: php pdo prepare

我一直在看这段代码已经很久了,我无法真正理解它对我的要求。无论我尝试什么,我都会收到相同的错误消息,而且我通过其他线程查看无效。错误是致命错误:在第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/>"; 
            }
            ?>

3 个答案:

答案 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();