2011-04-24 35 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

相关问题