嵌套while循环在php中只输出一行来选择标记
我正在使用下面的代码检索页面中的数据以选择标记嵌套while循环在php中只输出一行来选择标记,php,mysql,loops,while-loop,Php,Mysql,Loops,While Loop,我正在使用下面的代码检索页面中的数据以选择标记 <?php $approveduser = mysqli_query($conn, "SELECT * FROM users WHERE `status` ='approved' AND `id` != '" . $_SESSION['user_row_id'] . "'"); while ($approvedrow = mysqli_fetch_array($approveduse
<?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
}
?>
此问题是您用行覆盖$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>
上述方法可行,但最好将城市放在一个数组中,而不是在一个循环中获取它们。首先获取城市的内容
,并将结果存储在一个数组中。然后,您可以在内部循环中重用该数组,而不必反复从数据库中查询完全相同的数据。作为@MagnusEriksson所说的扩展,您可以在字符串中构建整个select HTML,然后只为每一行输出它。