-1

我在 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 查询为空

谢谢

4

2 回答 2

4

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

$this在这样调用的方法中使用是没有意义的:

$results = A::getUsers();

实例化您的类,然后在类对象上调用该方法。

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

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

于 2012-11-17T22:45:09.763 回答
0

尝试

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

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

于 2012-11-17T22:45:04.893 回答