我在执行以下查询时遇到致命错误:
$stmt = $db->query('SELECT * FROM comments LIMIT 50');
while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $result['name'] . ':' . strip_tags($result['message']);
}
返回:
Fatal error: Call to a member function query() on a non-object
我设置了这样的$ db:
try {$db = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');}
catch(PDOException $e) {echo $e->getMessage();}
有谁知道导致此错误的原因是什么?
答案 0 :(得分:1)
由于执行了查询,您没有收到错误。事实上,查询永远不会尝试执行
此错误 -
Fatal error: Call to a member function query() on a non-object
告诉您$db
不是对象。
要么它从未实例化,要么在不同范围内实例化。
答案 1 :(得分:0)
$ db尚未在您使用它的范围内正确初始化。
您可能想尝试在它们之前放置global $db;
以查看它是否是范围问题。
global $db;
try {$db = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');}
catch(PDOException $e) {echo $e->getMessage();}
global $db;
$stmt = $db->query('SELECT * FROM comments LIMIT 50');
while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $result['name'] . ':' . strip_tags($result['message']);
}