2016-05-04 1 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. –

Смежные вопросы