如何在PHPPDO中通过foreach循环从myslq表中获取所有行

如何在PHPPDO中通过foreach循环从myslq表中获取所有行,php,mysql,pdo,Php,Mysql,Pdo,我试图从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'];

我试图从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'];

    } 

}

故障在哪里

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'];

} 
?>

我会使用while循环。它看起来是这样的:

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

    $get_prod_qnt = $row['qnt'];
}

你说“错过第一个”是什么意思“PDOStatement::fetchColumn()不应用于检索布尔列,因为无法区分FALSE值与没有更多行可检索。请改用PDOStatement::fetch()。”我没有获取第一行。它只获取最后两行@为什么不直接做呢?还不清楚您正在使用
echo$get\u prod\u id=$row['prod\u id']做什么和下一个作业。您的
$get\u prod\u qnt
将只具有最后一个值。
$get\u prod\u qnt=$row['qnt'-这也需要回音,除非他们不想回音;嘿。@FunkFortyNiner是的,如果Op想将其显示为well,它应该是,但是如何检查此查询中是否有行@马西维基勒
while ($row = $query->fetchall) {
    echo $get_prod_id = $row['prod_id'];

    $get_prod_qnt = $row['qnt'];
}