在PHP(PDO)中访问私有变量

时间:2012-11-17 22:26:53

标签: php mysql string pdo

我在PHP中使用PDO ...我有以下问题。

以下代码不起作用。

class A {
 private $getUsersQuery = "SELECT * FROM users";      
 ...
 public function getUsers() {       
   $DBH = A::getDatabaseConnection();           
   try {
      $query = $DBH->prepare($this->getUsersQuery); 
      ...
   } catch(PDOException $e) {}
 }
}

但是,如果我使用它的作品。

$DBH->prepare("SELECT * FROM users"); 

即使我在prepare()之外使用echo它也可以......

echo $this->getUsersQuery;   // Outputs the sql string.

有人可以指出问题可能是什么。

更新:

错误:

SQLSTATE [42000]:语法错误或访问冲突:1065查询为空

由于

2 个答案:

答案 0 :(得分:4)

正如您在评论中提到的,您对非静态方法进行静态调用。

在这样调用的方法中使用$this毫无意义:

$results = A::getUsers();

启动您的类,然后在类对象上调用该方法。

$a = new A();
$a->getUsers();

或者使您的方法和SQL查询保持静态。

答案 1 :(得分:0)

尝试

$a = new A();
$result = $a->getUsers();

当您调用A :: getUsers()时,$ getUsersQuery的值可能未初始化。静态方法被称为喜欢它。