嵌入式foreach循环仅在for循环的第一次迭代中执行

时间:2018-01-29 00:52:59

标签: php loops foreach

我正在尝试使用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>

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

1 个答案:

答案 0 :(得分:2)

一旦读完了语句中返回的所有行,就无法再次读取它们,您需要在填充每个select之前回滚结果。而是使用fetchAll将结果作为数组。