"致命错误:在非对象上调用成员函数prepare()。"

时间:2014-06-27 14:03:20

标签: php mysql sql prepared-statement fatal-error

发生以下错误:

  

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

代码:

class Guestbook {

    public $db;

    public function getEntries(){
        $result = false;
        $query = 'SELECT * FROM db ORDER BY id DESC'; 

        $stmt = $this->db->prepare($query); //error in this line (17)                               
        // ...
    }   
}       

1 个答案:

答案 0 :(得分:1)

你有这个课程:

class Guestbook {
    public $db;

您永远不会为$db属性赋值,所以当您执行

$this->db->prepare($query);

你基本上在做

null->prepare($query);

在类构造函数中给$db一个值(或者确保它以某种方式以某种方式传递到类中)并且你会没事的。

$db = new mysqli('localhost', 'root', '', 'guestbook');

在数据库连接中,与类中的$db变量无关,除非您将其传递给类或在类中进行数据库初始化。