我想知道是否可以在while循环中运行查询,该循环用于显示SQL表的内容。
如果我不够清楚,这是代码:
$sql="SELECT * FROM hotels WHERE rooms>0";
$req=$db->query($sql);
while($row=$req->fetch()){
//The second query to check how many place is left
$req2=$db->query('SELECT COUNT(*) FROM people WHERE idhotels='.$row["idhotels"].';');
echo "hey".$req2;
$left_rooms= $row["rooms"] -$req2;
echo '<option value="'.$row["idhotels"].'">'.$row["name_hotel"].' ('.$left_rooms.' rooms left)</option>';
}
我在这里要做的是显示剩余房间数的酒店列表。问题是我必须计算在显示剩余房间数之前需要多少房间,因此第二个要求。
我的代码显然不起作用,但我无法弄清楚原因。 有人能帮助我吗?
非常感谢!
答案 0 :(得分:2)
为什么不使用联接和组,因此您只有一个查询?
$sql="SELECT h.idhotels,h.name_hotel,count(*) FROM hotels h inner join people p on h.idhotels = p.idhotels WHERE h.rooms>0 group by h.idhotels,h.name";
while($row=$req->fetch()){
// Here do whatever you want with each row
}
答案 1 :(得分:0)
您是否尝试使用加入的查询计算数据库中的左侧房间,如:
SELECT rooms - COUNT(*) AS left_rooms FROM hotels h WHERE rooms > 0 JOIN people p ON (p.idhotels = h.idhotels) GROUP BY h.idhotels, h.name ORDER BY left_rooms ASC;