Как получить все строки из таблицы myslq с помощью цикла foreach в php pdo - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь собрать все строки из таблицы базы данных mySql.Но я получаю на 1 строку меньше, чем исходные строки.Предположим, в таблице 3 строки, но я получаю данные из 2 строк.Я всегда скучаю по первому.Вот изображение моего стола.

Вот мой код:

$query = $db->query("SELECT * FROM `POS_refund`");

if($query->fetchColumn() > 0){

     foreach($query as $row){

        echo $get_prod_id = $row['prod_id'];

        $get_prod_qnt = $row['qnt'];

    } 

}

Где ошибка?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Я бы использовал цикл while.это будет выглядеть так:

while ($row = $query->fetchall) {
    echo $get_prod_id = $row['prod_id'];

    $get_prod_qnt = $row['qnt'];
}
0 голосов
/ 24 октября 2018

PDOStatement::fetchColumn Возвращает одиночный столбец из следующей строки набора результатов

Вы должны использовать fetch() или fetchall() в вашем случае

<?php

$query = $db->query("SELECT * FROM `POS_refund`")->fetchall();

foreach($query as $row){

    echo $get_prod_id = $row['prod_id'];

    $get_prod_qnt = $row['qnt'];

} 
?>

Если вы хотите увидеть, есть ли возвращенные записи, вы можете использовать count(), так как fetchall() возвращает массив, а затем просто посчитайте элементы массива

<?php

$query = $db->query("SELECT * FROM `POS_refund`");
$results = $query->fetchall();

if(count($results) > 0){
     foreach($results as $row){

        echo $get_prod_id = $row['prod_id'];

        $get_prod_qnt = $row['qnt'];

    } 

}else{

    echo "No results";
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...