繁体   English   中英

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

[英]Fatal error: Call to a member function prepare() on a non-object

好的,我从我的用户名存在函数获取了错误。 这是寄存器功能。

public function register($username, $upassword){
    if(!$this -> exists($username)) {
        $salt = $this->salt();
        $date = date('Y-m-d');
        $password = $this->md5($upassword, $salt);

        $SQL = $this -> db -> prepare("INSERT INTO `user` (username, password, salt, created_at) VALUES(:username, :password, :salt, :date)");
        $SQL -> execute(array(':username' => $username, ':password' => $password, ':salt' => $salt,':date' => $date));
    return TRUE;
  } else {
      return FALSE;
  }
} 

错误似乎来自此行中的prepare语句。

public function exists($username){
       $SQL = $this -> db -> prepare("SELECT COUNT(*) FROM `user` WHERE `username` = :username");
       $SQL -> execute(array(':username' => $username ));
       $count = $SQL -> fetchcolumn(0);
       if($count > 0) {
           return TRUE;
       } else {
           return FALSE;
       }
   }

得到错误:致命错误:在第41行,在functions.php中的非对象上调用成员函数prepare()

存在功能中的第一行是哪一行?

有人能帮我一下吗?

exist()类未“查看”您的$ this-> db,请尝试对其进行调试(如果它确实在引用或可以在exist()类中使用)

如果您尝试以如下方式实例化类: new ClassName($db)则极有可能未定义$this->db因为您实际上并未为该类定义可使用$this->db做任何事情的构造函数$this->db

_construct($db)应该是__construct($db)

假设您想要构造函数魔术方法。 所有魔术方法都以两个下划线开头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM