2014-06-27 20 views
-2

我得到這個錯誤,我不知道如何解決它...... 一開始我有另外的錯誤(同一線路)「DB」是未知的,但我可以用用正確的語法來修復它「$這個 - >分貝......」無法修復:「致命錯誤:調用一個成員函數準備()一個非對象。」

Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\Gaestebuch\guestbook1.php on line 17

第17行:

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

推薦代碼如下:

include_once("datenbank.php");
class Guestbook {

public $db; 

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

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

      $stmt->execute();            
      $stmt->bind_result($id, $name, $message, $time, $date, $ip);  
       while($stmt->fetch()) {         
        $result[] = array('message' => $message, 
           'name' => $name, 
           'id' => $id, 
           'date' => $date, 
           'time' => $time); 
       } 
       $stmt->close();            
       return $result; 

    } 
} 

的數據庫連接,其中包括在一開始是這樣的:

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

     if (mysqli_connect_errno()) { 
      printf("Verbindung fehlgeschlagen: %s\n",mysqli_connect_error()); 
      exit(); 
     } 

我希望有人能幫助我解決這個(希望易peasy)錯誤。

+2

你類變量$ DB是不確定的。包含的文件不會影響它。附:這是非常糟糕的設計... – Phantom

+0

$這個 - >分貝不等於$ DB數據庫連接。 – Jonast92

回答

1

你有這個類:

class Guestbook { 
    public $db; 

你從來沒有給$db屬性的值,所以當你

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

你基本上做

null->prepare($query); 

$db在類的構造函數(值或者確保它傳遞到類不知何故,無論哪種方式..),你會沒事的。

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

在數據庫連接與在,除非你把它傳遞到類或使課堂內的數據庫初始化發生班上$db變量無關。

相關問題