为什么此查询脚本会返回致命错误?

时间:2012-11-21 20:15:33

标签: php pdo fatal-error

我在执行以下查询时遇到致命错误:

$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();}

有谁知道导致此错误的原因是什么?

2 个答案:

答案 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']);
    }