在代码中的多个位置使用mysql查询结果

时间:2018-01-23 15:56:10

标签: php mysql

我正在建立一个跟踪隐形眼镜的系统。我将隐形眼镜信息存储在数据库中,因为有时价格/可用性会发生变化,我会从程序中的多个点访问此信息。我正在尝试通过将“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>

我为右眼和左眼复制/粘贴了这个循环。但它只适用于代码中首先出现的下拉列表。

3 个答案:

答案 0 :(得分:0)

可能的解决方案在性能方面更有效:

<?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循环中获得结果。如果左右选择相同,则可以使用相同的变量。

答案 1 :(得分:0)

将品牌存储在数组中,然后您可以循环遍历数组。

<?php

    $contact_list = mysqli_query($link, "SELECT brand FROM contacts ORDER BY brand");

    $brands = array();

    while($row = mysqli_fetch_array($contact_list))
    {
        array_push($brands, $row['brand']);
    }

?>
<select class="form-control" name = "brandOS"> 
    <option value="0">Please Select</option>
    <?php
        foreach($brands as $brand){
            ?>

                <option value = "<?php echo($brand[0])?>" name = "brandOS">
                    <?php echo($brand[0]) ?>
                </option>

            <?php
        }

    ?>
</select>

答案 2 :(得分:0)

您可以使用PHP数组(如SESSION)来存储值并在整个站点中使用它们。一定要打电话给&#34; session_start()&#34;但是,在您使用该数组的每个页面上的方法。

//Initialize sessions
session_start();

...

//Right after getting result from query
$_SESSION['contact_list'] = $contact_list;

要使用它,请务必调用我上面告诉您的方法,并使用相同的语法调用该变量:

<?php 
    while($row = mysqli_fetch_array($_SESSION['contact_list'])) { ?>

希望这有帮助。