我执行mySQL查询以获取一些数据,然后(出于调试目的)将其打印出来。在这个特定的示例中,有5行数据,并且数据库表中的每个room_id都有一个值。然而,打印输出仅显示第一行的room_id。
$query_rooms = "SELECT room_id FROM lh_rooms WHERE hid = '$hid'";
$rooms = mysql_query($query_rooms, $MySQL) or die(mysql_error());
$row_rooms = mysql_fetch_assoc($rooms);
$numrows = mysql_num_rows($rooms);
$i = 0;
while ($i < $numrows) {
$room_id=$row_rooms['room_id'][$i];
echo $i." - ".$room_id."<br><br>";
++$i;
}
0-2
1-
2-
3-
4-
有人能解释一下发生了什么吗
您正在获取多行。
因此,您需要对结果集进行循环,而不是只获取一次。
更正代码:
$query_rooms = "SELECT room_id FROM lh_rooms WHERE hid = '$hid'";
$rooms = mysql_query($query_rooms, $MySQL) or die(mysql_error());
$i=0;
while($row_rooms = mysql_fetch_assoc($rooms)) {
$room_id=$row_rooms['room_id'];
echo $i." - ".$room_id."<br><br>";
++$i;
}
注意:永远不要使用mysql_,它们已被弃用,并将在即将发布的版本中删除。请改用mysqli_或PDO。
像这样尝试
$query_rooms = "SELECT room_id FROM lh_rooms WHERE hid = '$hid'";
$rooms = mysql_query($query_rooms, $MySQL) or die(mysql_error());
$i = 0;
while ($row_rooms = mysql_fetch_assoc($rooms)) {
$room_id=$row_rooms['room_id'];
echo $i." - ".$room_id."<br><br>";
$i++;
}
您正在循环$i,而不是循环$row_rooms。