如何在PHPPDO中通过foreach循环从myslq表中获取所有行
我试图从mySql数据库的表中收集所有行。但是我比原来的行少了1行。假设表有3行,但我得到的数据是2行。我总是错过第一个。这是我桌子的图像 这是我的密码:如何在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'];
$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'];
}