【问题标题】:Embedded foreach loop is being executed only in first iteration of for loop嵌入式 foreach 循环仅在 for 循环的第一次迭代中执行
【发布时间】:2018-07-07 15:50:21
【问题描述】:

我正在尝试使用 for 和 foreach 循环生成一个表单。想法很简单,但由于某种原因,我遇到了奇怪的问题。 For 循环应该有 5 次迭代,这工作正常,但在这个 for 循环中我嵌入了一个 foreach 循环。 Foreach 循环似乎只在 for 循环的第一次迭代中完成。我认为代码还可以,但可能多个连接模糊了我寻找错误所在的愿景。这就是代码现在的样子:

<?php
include("pdo.php");

$stmt = $pdo->query('SELECT name FROM Ingredients');
?>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <form>
            <?php
            for ($i = 1; $i <= 5; $i++) {
                echo "<label>Ingredient $i</label><select name='ingredient $i'>";
                foreach ($stmt as $row) {
                    echo ('<option value="' . $row['name'] . '">' . $row['name'] . '</option>' . "\n");
                }
                echo "</select><br>";
            }
            ?>
        </form>
    </body>
</html>

换句话说,只有第一个列表被填充,但接下来的四个列表是空的。

【问题讨论】:

标签: php loops foreach


【解决方案1】:

一旦您读取了语句中返回的所有行,您将无法再次读取它们,您需要在填充每个选择之前回退结果。而是使用fetchAll 以数组形式获取结果。

【讨论】:

  • 感谢您的提示。我添加了 fetchall(),现在一切正常。
猜你喜欢
  • 1970-01-01
  • 2016-06-19
  • 2019-12-19
  • 2022-06-15
  • 2010-12-28
  • 1970-01-01
  • 2020-07-19
  • 2023-04-11
  • 1970-01-01
相关资源
最近更新 更多