PHP查询在一段时间内获取循环

时间:2017-01-17 08:36:46

标签: php mysql sql pdo while-loop

我想知道是否可以在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>';

                        }

我在这里要做的是显示剩余房间数的酒店列表。问题是我必须计算在显示剩余房间数之前需要多少房间,因此第二个要求。

我的代码显然不起作用,但我无法弄清楚原因。 有人能帮助我吗?

非常感谢!

2 个答案:

答案 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;