我正在尝试从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'];
}
}
哪里出问题了?
答案 0 :(得分:2)
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";
}
?>
答案 1 :(得分:-1)
我会使用while循环。看起来像这样:
while ($row = $query->fetchall) {
echo $get_prod_id = $row['prod_id'];
$get_prod_qnt = $row['qnt'];
}