我遇到了php for for循环的问题 循环迭代太快,并且在内部的html代码被回显之前完成。
<?php for($i = 0; $i < sizeof($shoppingCart); $i++) {
$sql = "SELECT * FROM products_test WHERE id = " . substr($shoppingCart[$i], 5) . "";
$q = $DBH->query($sql) or die("failed!");
$q->setFetchMode(PDO::FETCH_ASSOC);
$r = $q->fetchAll();
echo '<tr>';
echo '<td><img src="' . $r[$i]['image']. '" /></td>';
echo '<td>' . $r[$i]['title'] . '</td>';
echo '<td>' . $r[$i]['desc'] . '</td>';
echo '<td>' . $r[$i]['price'] . '</td>';
echo '<td><input type="number" id="qty"></td>';
echo '<td>Remove</td>';
echo '</tr>';
} ?>
设置临时变量不起作用,因为它只会有相同的行为。
怎么了?
提前致谢!
答案 0 :(得分:0)
可能是你的阵列空了。你应该添加一个catch以防万一。
您可能希望使用empty
函数:
<?php
if (!empty($shoppingCart))
{
for($i = 0; $i < sizeof($shoppingCart); $i++) {
$sql = "SELECT * FROM products_test WHERE id = " . substr($shoppingCart[$i], 5) . "";
$q = $DBH->query($sql) or die("failed!");
$q->setFetchMode(PDO::FETCH_ASSOC);
$r = $q->fetchAll();
echo '<tr>';
echo '<td><img src="' . $r[$i]['image']. '" /></td>';
echo '<td>' . $r[$i]['title'] . '</td>';
echo '<td>' . $r[$i]['desc'] . '</td>';
echo '<td>' . $r[$i]['price'] . '</td>';
echo '<td><input type="number" id="qty"></td>';
echo '<td>Remove</td>';
echo '</tr>';
}
}
else
{
echo '<tr><td>Your shopping cart is empty</td></tr>';
}
?>
答案 1 :(得分:0)
在我看来,你的查询总是返回一行?但您尝试使用$r[$i]
访问不存在的行。
这可以解释为什么你在浏览器中看不到任何东西。但是尝试查看浏览器源代码,如果它显示空的html标签,那就是这个问题。
尝试使用print_r($r)
显示数组的内容,并查看其外观。