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']); 
    } 
相關問題