嵌套的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中的标签的主要内容,如果未能解决你的问题,请参考以下文章