2016-05-04 120 views
0

我想用此代碼發表評論頁面,但最終會出現錯誤。PHP致命錯誤:不能使用PDOStatement類型的對象作爲數組

下面是代碼:

$query = ("SELECT * FROM comment ORDER BY id DESC"); 

    $getquery = $connection->query($query); 

    while($rows = ($getquery)) 
    { 

     $id = $rows['id']; 
     $names = $rows['name']; 
     $comment = $rows['comment']; 

     echo $name . '<br/>' . $comment . '<br/>' . '<br/>' ; 
    } 

這裏是錯誤:

PHP Fatal error: Uncaught Error: Cannot use object of type PDOStatement as array in E:\utsdata\2T\2107982859\comment.php:61

其中線61:$id = $rows['id'];

+0

第61行 - > $ id = $ rows ['id']; –

+0

'foreach'而不是'while'。 – mario

+0

您需要「獲取」行:http://php.net/manual/en/pdostatement.fetch.php – AbraCadaver

回答

2

1)更改

$getquery = $connection->query($query); 

$getquery = $connection->prepare($query); 

2)改變

while($rows = ($getquery)) 

while ($rows = $getquery->fetch(PDO::FETCH_BOTH)) { 

3)添加$getquery->execute();

更新的代碼

$query = ("SELECT * FROM comment ORDER BY id DESC"); 

$getquery = $connection->prepare($query); 
$getquery->execute(); 
while($result = $getquery->fetch(PDO::FETCH_BOTH);) 
{ 

    $id = $rows['id']; 
    $names = $rows['name']; 
    $comment = $rows['comment']; 

    echo $name . '<br/>' . $comment . '<br/>' . '<br/>' ; 
} 
+0

OP爲什麼要進行這些更改?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –

+0

現在它也壞了。該查詢剛剛準備好,但從未執行。所以不會返回任何行。 (除了愚蠢的堅持' - > fetch'而不是使用PDO迭代器。) – mario

+0

我更新了我的代碼。請參閱@mario。 –

相關問題