首页 > 解决方案 > 嵌套的while循环只输出一行来选择php中的标签

问题描述

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

<?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 标记输出一行。导致这种情况的错误可能是什么。我怎样才能解决这个问题。

标签: phpmysqlloopswhile-loop

解决方案


这个问题是你用行覆盖$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>

以上将起作用,但最好将城市放入单个数组中,而不是在循环中获取它们。


推荐阅读