【发布时间】:2017-03-03 21:49:22
【问题描述】:
我正在尝试使用 foreach 来回显列中的每一行。但我得到:
警告:为 foreach() 提供的参数无效
这是我的代码:
<?php
$user = user;
$pass = pass;
$dbh = new PDO('mysql:host=localhost;dbname=onlyaskf_registered', $user, $pass);
$stmt = $dbh->prepare("SELECT COUNT(*), sum(price),part_number,location,price FROM products WHERE code = :usercode");
$stmt->bindParam(':usercode', $_SESSION['MM_Username']);
?>
<?php
if ($stmt->execute()) {
foreach($stmt->fetchColumn(2) as $row) {
echo $row;
}
}
?>
使用此代码,我可以获得列中的第一行:
<?php
if ($stmt->execute()) {
$row = $stmt->fetchColumn(2);
echo $row;
}
?>
第 2 列是我的 part_number 列,如果我像上面那样格式化我的 php,它会给我该列行的第一个实例。如何使用 foreach 显示列中的每一行?这甚至可能还是有更好的方法来回显整列的行?
更新:
我把我的代码改成了这个,但它只给了我第一行的列值,而不是每一行:
<?php if ($stmt->execute()) {
while($val = $stmt->fetch()) {
echo $val['part_number'];
}
} ?>
【问题讨论】:
-
print_r($row)你会知道它的显示方式 -
@devpro 我改变了 echo $row;到 print_r($row) 这仍然给我相同的结果,并且收到警告:为 foreach() 提供的参数无效
-
用@marc-b 例子试试同样的东西
-
@devpro 这给了我这样的整个数组:
Array ( [COUNT(*)] => 3[part_number] => 14124 [location] => here town如何设置它以便它只显示part_number列中的所有行? -
@devpro 就是这样,SUM 正在对所有内容进行分组,这就是为什么我在循环中只得到一行。非常感谢您的帮助!