2013-03-09 57 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

相關問題