我在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 $this->getUsersQuery; // Outputs the sql string.
有人可以指出问题可能是什么。
更新:
错误:
SQLSTATE[42000]:语法错误或访问冲突:1065 查询为空
谢谢
如您的评论中所述,您对非静态方法进行静态调用。
在这样调用的方法中使用$this
是没有意义的:
$results = A::getUsers();
实例化类,然后在类对象上调用该方法。
$a = new A();
$a->getUsers();
或者将方法和 SQL 查询设置为静态。
尝试
$a = new A();
$result = $a->getUsers();
调用 A::getUsers() 时,$getUsersQuery的值可能未初始化。静态方法被称为喜欢。