我执行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 -
有人可以解释发生了什么
答案 0 :(得分:1)
您正在获取多行。
因此,您需要遍历结果集而不是仅提取一次。
更正后的代码:
$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 。
答案 1 :(得分:0)
试试这个
$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。