首页 > 解决方案 > 如何通过php pdo中的foreach循环从myslq表中获取所有行

问题描述

我正在尝试从 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'];

    } 

}

错在哪里?

标签: phpmysqlpdo

解决方案


PDOStatement::fetchColumn从结果集的下一行返回单列

你应该使用fetch()orfetchall()在你的情况下

<?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";
}

?>

推荐阅读