2011-04-24 76 views
6

我已經得到了錯誤,併線是這樣的:致命錯誤:無法訪問空屬性

$stations=$this->$db->query('SELECT * from service_stations'); 

的$ DB變量聲明爲私有的,我用它在__construct函數是這樣的:

public function __construct() { 
        //after including the config file 
       $host=DB_HOST; 
      $dbname=DB_NAME; 
      $dbuser=DB_USER; 
      $dbpsw=DB_PASSWORD; 
     try{ 
      $pdo_options[PDO::ATTR_ERRMODE]=PDO::ERRMODE_EXCEPTION; 
      $this->db=new PDO('mysql:host='.$host.';dbname='.$dbname, $dbuser, $dbpsw, $pdo_options); 
      } 
     catch(Exception $e) 
      { 
      die('Erreur: '.$e->getMessage()); 
      } 
    } 

THX提前:)

+1

請停止在問題標題中寫入標籤。你幾乎完成了所有這些。 – 2011-04-24 19:52:13

+0

我做了幾乎相同的錯誤,這個問題的答案是非常有幫助 – 2013-12-08 10:10:35

回答

39

你可能已經做了一個錯字:

$stations=$this->db->query('SELECT * from service_stations'); 
//    ^
// No $ here ----/ 
+0

大聲笑感謝我瘋了! – plushyObject 2016-09-20 15:08:29

9

您可能打算編寫$this->db而不是$this->$db。前者訪問屬性db,後者訪問屬性,那些名稱存儲在$db變量中。並且由於該變量未定義,您最終將訪問一個空屬性,如錯誤消息所示。

+0

謝謝我正要扔電腦:D – plushyObject 2016-09-20 15:08:52

+0

嚴重地說,我總是犯錯誤$和變量放置,無論它是將它拋出還是對象屬性訪問。 PHP在其語言設計方面存在一些可用性問題。 – user2867288 2017-08-31 16:34:04

相關問題