我正在构建一个跟踪隐形眼镜的系统。我将隐形眼镜信息存储在数据库中,因为有时价格/可用性会发生变化,并且我从程序中的多个点访问此信息。我正在尝试通过执行“SELECT * FROM Contacts”作为查询,使用下拉列表与此列表进行交互。我的代码如下所示:
$contact_list = mysqli_query($link, "SELECT brand FROM contacts ORDER BY brand");
然后,我使用 PHP 在 while 循环中回显该列表,以填充下拉列表中的选项。
我的问题是这样的:我在同一张表格上为每只眼睛提供了这些下拉菜单。所以这是“品牌右眼”……有关右眼的其他杂项信息……然后是“品牌左眼”。但只有右眼会看到品牌信息,因为它首先出现在代码中。我要做的就是复制/粘贴完全相同的查询并执行
$contact_list2 = mysqli_query($link, "SELECT brand FROM contacts ORDER BY brand");
然后如果我再次需要下拉菜单,我需要执行 $contact_list3.. 等等。为什么我不能使用相同的变量生成下拉列表?为什么它在第一次执行后停止响应调用变量?是否有任何我可以实现的解决方法,让我不必每次都复制/粘贴具有不同变量关联的相同查询?
仅供引用,我的php代码是这样的:
<select class="form-control" name = "brandOS">
<option value="0">Please Select</option>
<?php
while($row = mysqli_fetch_array($contact_list))
{
?>
<option value = "<?php echo($row['brand'])?>" name = "brandOS">
<?php echo($row['brand']) ?>
</option>
<?php
}
?>
</select>
我有右眼和左眼的循环复制/粘贴。但它仅适用于代码中首先出现的下拉列表。
最佳答案
在性能方面可能更有效的解决方案可能是:
<?php
$left_eye = '<option value="0">Please Select</option>';
$rigth_eye = '<option value="0">Please Select</option>';
while($row = mysqli_fetch_array($contact_list))
{
//logic for left eye
$left_eye .= <<<HTML
<option value ="{$row['brand']}" name = "brandOS">
{$row['brand']}
</option>
HTML;
//logic for rigth eye
$rigth_eye .= <<<HTML
<option value ="{$row['brand']}" name = "brandOS">
{$row['brand']}
</option>
HTML;
}
?>
<select class="form-control" name = "brandOS">
<?php echo $left_eye ; ?>
</select>
<select class="form-control" name = "brandOS">
<?php echo $rigth_eye ; ?>
</select>
使用此解决方案,您可以在同一个 while 循环中获得结果。如果左右选择相同,则可以使用相同的变量。
关于php - 在代码中的多个地方使用mysql查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48405868/