2013-03-09 54 views
-3

我的PHP函数非常简单。它只是使用预处理语句来查询数据库,但我不明白为什么它不起作用。PHP:调用一个非对象的成员函数prepare()

我不断收到一个“调用一个成员函数准备()一个非对象”的错误,尽管我已经声明$conn作为私有变量和使用$this->conn

<?php 

require_once 'constants.php'; 

class Mysql { 

    private $conn; 

    function ___construct(){ 

     $this->conn = new mysqli (DB_SEVER, DB_USER, DB_PASSWORD, DB_NAME); 
     if (!$this->conn){ 
      die('There was a problem connecting to the database!'); 
     } 

    } 

    function verify_name_and_pass ($un, $pwd) { 

     $query = "SELECT * FROM users 
        WHERE username = ? AND user_password = ? 
        LIMIT 1"; 

     if ($stmt = $this->conn->prepare($query)) { 

      $stmt->bind_param('ss', $un, $pwd); 
      $stmt->execute(); 

      if ($stmt->fetch()) { 
       $stmt->close(); 
       return true;    
      } 

     }  
    } 
} 
+3

男人,这个问题已经被问过数十亿次。为什么不花几秒钟阅读现有的答案? – 2013-03-09 13:25:51

+3

'DB_SEVER' - 错字? – Clive 2013-03-09 13:26:56

回答

2

问题是你__construct()功能。至少有一个错字:

  • __construct()是拼写2 _,你有3
  • 拼对你可能是指使用DB_SERVER,而不是DB_SEVER

而且,一旦你建立了$this->connnull,您应检查连接是否正确读取$this->conn->connect_errno,并确保建立它的0

相关问题