-1

我一直在看这段代码很长时间了,我无法真正理解它想要从我这里得到什么。无论我尝试什么,我都会收到相同的错误消息,而且我查看了其他线程无济于事。错误是Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\new_serverside\sprint1.php 在第 63 行。我的代码是:

<?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/>"; 
            }
            ?>
4

3 回答 3

0

在全局引用之后调用 $dbh 上的 var_dump()。

var_dump($dbh);

你应该在那里找到一些不是你所期望的东西。

于 2013-11-21T23:41:26.393 回答
0

错误意味着它$dbh不是一个对象,所以你不能调用prepare()它的方法。在哪里$dbh初始化?var_dump($dbh);在调用之前尝试做prepare()以查看该变量中的真正内容。

于 2013-11-21T23:41:28.360 回答
0

错误听起来好像$dbh没有正确初始化。您可以通过使用单例类而不是全局变量来确保将来不会发生这种情况。

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();
于 2013-11-21T23:48:26.227 回答