【问题标题】:nested while loop outputs only one row to select tag in php嵌套的while循环只输出一行来选择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,然后为每一行输出它。

标签: php mysql loops while-loop


【解决方案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>

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-09
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2012-01-02
    相关资源
    最近更新 更多