嵌套的while循环只输出一行来选择php中的标签

Posted

技术标签:

【中文标题】嵌套的while循环只输出一行来选择php中的标签【英文标题】:nested while loop outputs only one row to select tag in php 【发布时间】:2021-03-31 03:06:06 【问题描述】:

我正在使用下面的代码在我的页面中检索数据以选择标签

<?php
     $approveduser = mysqli_query($conn, "SELECT * FROM users WHERE `status` ='approved' AND `id` != '" . $_SESSION['user_row_id'] . "'");

    while ($approvedrow = mysqli_fetch_array($approveduser))  
    //this loops works fine
  ?>
        <tr>
           <td class="text-center">
              <div class="">
                  <select id="cat">
                     <?php
                         $cityquery = mysqli_query($conn, "SELECT * FROM `cities`");

                         while ($cityquery = mysqli_fetch_array($cityquery)) 
                         //this loop has the problem
                     ?>
                     <option value="<?php echo $cityquery['id']; ?>"><?php echo $cityquery['cityname']; ?></option>
                    <?php    
                     
                    ?>
                  </select>
              </div>
           </td>
        </tr>
       <?php
       
     ?>

当数据库中有更多行时,我的第二个 while 循环只向 select 标记输出一行。 导致这种情况的错误可能是什么。 我该如何解决这个问题。

【问题讨论】:

首先获取cities 的内容并将结果存储在一个数组中。然后,您可以在内部循环中重复使用该数组,而不是一遍又一遍地从数据库中查询完全相同的数据。 作为@MagnusEriksson 所说的扩展,您可以在字符串中构建整个选择 html,然后为每一行输出它。 【参考方案1】:

这个问题是你用行覆盖了$cityquery 变量。对行使用单独的变量。

  <select id="cat">
     <?php
         $cityquery = mysqli_query($conn, "SELECT * FROM `cities`");

         while ($cityrow = mysqli_fetch_array($cityquery)) 
         //this loop has the problem
     ?>
     <option value="<?php echo $cityrow['id']; ?>"><?php echo $cityrow['cityname']; ?></option>
    <?php    
     
    ?>
  </select>

上述方法可行,但最好将城市放入一个数组中,而不是在循环中获取它们。

【讨论】:

以上是关于嵌套的while循环只输出一行来选择php中的标签的主要内容,如果未能解决你的问题,请参考以下文章

JMETER 嵌套 while 循环在 CSV 数据文件的第一行停止

PHP第二个while循环在while循环中只运行一次

sql查询只打印第一行

理解python中嵌套while循环中的概念的问题

嵌套循环有两个while循环

使用嵌套while循环输出10行10列的星号