PHP:For循环在代码执行之前完成
我对php的for循环有问题。PHP:For循环在代码执行之前完成,php,for-loop,indexing,echo,Php,For Loop,Indexing,Echo,我对php的for循环有问题。 循环迭代太快,在内部html代码被echo-ed之前完成 <?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!"); $
循环迭代太快,在内部html代码被echo-ed之前完成
<?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>';
} ?>
设置临时变量不会起作用,因为它只会有相同的行为
怎么了
提前谢谢 可能是您的阵列出现空阵列。你应该加一个陷阱以防万一 您可能希望使用
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>';
}
?>
在我看来,您的查询总是返回一行?但是您尝试使用
$r[$i]
访问不存在的行
这可以解释为什么你在浏览器中看不到任何东西。但是尝试查看浏览器源代码,如果它显示空的html标记,那么就是这个问题
试着用
print\r($r)
显示数组的内容,看看这是什么样子。怎么了?你期望的结果是什么?你现在得到了什么?你所说的“在回送内部html代码之前完成”是什么意思?听起来您好像遇到了错误,因此代码停止。您确定这是您的确切代码,并且没有代码>在$i++)之后
以及$shppingCart
的内容是什么?@Rocket no,我的意思是在for循环关闭后)
在后续代码之前执行它。是的!这就是问题所在。对不起,没有提供更多信息。没问题。如果我的回答对你有帮助,你能接受吗?