使用单个查询填充多个下拉列表


Populate multiple drop-down lists with a single query

我有四个下拉列表,我想用MSSQL表中的值填充它们。所有四个列表都应包含相同的值。查询如下:

$data = $con->prepare("SELECT ID, Code FROM Table WHERE Code = :value ORDER BY Code");
$input = array('value'=>'value'); //'value' is hardcoded, not a variable
$data->execute($input);

这是我下拉列表的代码:

<?php 
echo "<select name='"proj1[]'">";
while($row = $data->fetch(PDO::FETCH_BOTH))
{
  echo "<option value='".$row['Code']."'>".$row['Code']."</option> ";
}
echo "</select>";
?>

这适用于一个下拉列表。但是,如果我尝试创建另一个查询(proj2[]、proj3[]、proj2[])并应用相同的查询,PHP页面将在此时停止加载,第二个下拉列表也不会填充。我找到的唯一方法是复制查询并更改变量($data变成proj2[]的$data2,依此类推)。我真的不希望同一个查询写四次。有办法绕过它吗?

$select = '';
while($row = $data->fetch(PDO::FETCH_BOTH))
{
  $select .= "<option value='".$row['Code']."'>".$row['Code']."</option> ";
}
echo "<select name='"proj1[]'">";
echo $select;
echo "</select>";
echo "<select name='"proj2[]'">";
echo $select;
echo "</select>";
//etc...

为什么不把所有这些都放在一个veriable中,然后使用4次呢?类似这样的东西:

<?php
while($row = $data->fetch(PDO::FETCH_BOTH))
{
  $options .= "<option value='".$row['Code']."'>".$row['Code']."</option> ";
}
for($i = 0; $i <= 4; $i++){
echo "<select name='"proj1[]'">";
echo $options;
echo "</select>";
}
?>