2012-11-16 81 views
2

我想調試爲什麼下面的查詢不返回結果集。當我嘗試使用print_r來調試時,看看這個sql返回的是什麼,我得到了sql語句本身,而不是結果集。有人可以幫我解釋爲什麼這不會返回結果集嗎?print_r()顯示sql語句而不是打印pdo結果集?

編輯:我使用PHP數據的查詢功能對象

$query = "select * from categories order by categoryID"; 

    $categories = $db->query($query); 

    print_r($categories); 

回答

5

因爲該方法返回一個PDOStatement對象,如所陳述in the manual,不是關聯陣列。您必須先從該對象中獲取結果集。

你可以使用fetchAll()獲得關聯數組所有結果(或任何其他PDO根據自己的口味提取法):

print_r($categories->fetchAll()); 

當你遇到這樣的問題,它始終是最好看手冊。

+0

謝謝你打印數組......然而,我在代碼中使用了一個foreach循環來填充一個select並且沒有工作......所以不知道爲什麼print_r沒有工作... – user481913

+2

@ user481913 PDOStatement有一個所謂的迭代器,所以當您在foreach中使用它時,它總是會返回簡單'fetch()'方法的下一個結果。你也可以在手冊中看到這個foreach例子。 – kapa

0
$sql = "select * from categories order by categoryID"; 

$query = $db->query($sql); 

$categories = $query->fetchAll(); 

echo "<pre>"; 
print_r($categories); 
echo "</pre>";