【问题标题】:"Fatal error: Call to a member function prepare() on a non-object.."“致命错误:在非对象上调用成员函数 prepare()..”
【发布时间】:2014-06-27 14:03:20
【问题描述】:

出现以下错误:

致命错误:在非对象上调用成员函数 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)                               
        // ...
    }   
}       

【问题讨论】:

  • 您的类变量 $db 未定义。包含的文件不影响它。附言这是非常糟糕的设计......
  • $this->db 在数据库连接中不等于$db。

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


【解决方案1】:

你有这个课程:

class Guestbook {
    public $db;

你永远不会给 $db 属性一个值,所以当你这样做时

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

你基本上是在做

null->prepare($query);

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多