1

我有一个包含 9 个下拉框的表单,需要由相同的查询填充。我使用 foreach 循环列出选项,但将代码复制到 scond 下拉列表不会产生任何选项。我想这是因为结果已经循环所以什么也没找到。

如何为每个循环重置结果?或者也许有人可能知道有一种更有效的方法来实现这一点。

这是查询:

$qry2 = "SELECT ride_id, name FROM tpf_rides WHERE park_id = $park_id ORDER BY name ASC";
        $res2 = $pdo->query($qry2);

这是我正在使用的循环:

<select name="ride_id_image">
    <option value="">Select Ride</option>

<?php   foreach ($res2 as $row2) {
    printf('<option value="%s">%s</option>' . PHP_EOL, $row2['ride_id'], $row2['name'] );
 } ?>
    </select>

谢谢

4

3 回答 3

5

有一种更有效的方法可以做到这一点。与其多次运行结果集,不如将其写入字符串一次,然后您可以根据需要多次重复使用它:

<?php   

$options = "";

foreach ($res2 as $row2) {
    $options .= sprintf('<option value="%s">%s</option>' . PHP_EOL, $row2['ride_id'], $row2['name'] );
 } 

 ?>

现在,无论何时你想打印选项,你都可以回显你的字符串:

<select name="ride_id_image">
    <option value="">Select Ride</option>
    <?php echo $options ?>    
    </select>
于 2013-08-15T20:51:10.310 回答
3

首次运行时,将结果集中的数据复制到数组中。在随后的每次运行中,执行foreach数组而不是结果集。

或者,你可以很聪明,像@andrewsi 说的那样做。

于 2013-08-15T20:50:04.247 回答
2

安德鲁西的回答是最有效的。但是要回答您要完成的任务,您可以从 PDO 获取数组:

$qry2 = "SELECT ride_id, name FROM tpf_rides WHERE park_id = $park_id ORDER BY name ASC";
$result = $pdo->query($qry2);
$res2 = $result->fetch(PDO::FETCH_ASSOC);
于 2013-08-15T20:53:46.870 回答