我在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查询为空
由于
答案 0 :(得分:4)
正如您在评论中提到的,您对非静态方法进行静态调用。
在这样调用的方法中使用$this
毫无意义:
$results = A::getUsers();
启动您的类,然后在类对象上调用该方法。
$a = new A();
$a->getUsers();
或者使您的方法和SQL查询保持静态。
答案 1 :(得分:0)
尝试
$a = new A();
$result = $a->getUsers();
当您调用A :: getUsers()时,$ getUsersQuery的值可能未初始化。静态方法被称为喜欢它。