2012-11-21 55 views
0

我得到一个致命的错误上执行下面的查询:为什么此查询脚本返回致命错误?

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

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

+1

你忘记了初始化$ db吗? –

+1

你是如何设定$ db的? – Dogbert

回答

1

由于执行查询,您没有收到错误。事实上,查询永远不会尝试执行

此错误 -

Fatal error: Call to a member function query() on a non-object 

告诉你$db不是一个对象。

要么它从未实例化,要么在不同的范围内实例化。

+0

事实上,我不小心把$ db放在if语句中,它只会在post请求中执行。修好了,谢谢! – BazzyTK

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