使用相同的查询同时使用mysql表中的数据填充多个下拉列表

时间:2016-08-04 22:56:19

标签: php html mysql

所以我在页面上有多个下拉菜单。但我需要他们从单个数据库查询中获取记录,以便所有下拉列表都具有相同的列表。我试图实现这一目标,但我得到的只是第一次下载填充。这就是我在下面所做的并需要帮助。

<select name="pl2a" class="input-field-login3" id="pl2a" tabindex="1">
  <option selected="Selected">--Select Player--</option>
  <?php do { ?>
  <option value="<?php echo $row_playersa['plyName']; ?>"><?php echo $row_playersa['plyName']; ?></option>
  <?php } while ($row_playersa = mysqli_fetch_assoc($result_playersa)); ?> 
</select>

我只是通过更改名称来区分所有下拉菜单。但只有第一次下拉才会填充。

1 个答案:

答案 0 :(得分:1)

mysqli_fetch_assoc在您使用结果集时会消耗这些行。因此,在生成第一个下拉列表后,您已到达结果集的末尾,并且对mysqli_fetch_assoc的进一步调用将返回null。要解决此问题,请在输出任何下拉列表之前将结果存储在数组中。该阵列将是可重复使用的。

这样做一次:

<?php  
    while ($row_playersa = mysqli_fetch_assoc($result_playersa)) {
        $players[] = $row_playersa;
    }
?>

然后你可以根据需要多次这样做:

<select name="pl2a" class="input-field-login3" id="pl2a" tabindex="1">
  <option selected="Selected">--Select Player--</option>
  <?php foreach ($players as $player): ?>
    <option value="<?php echo $player['plyName'] ?>"><?php echo $player['plyName'] ?></option>
  <?php endforeach ?>
</select>