2017-01-17 27 views
0

我想知道是否有可能在用於顯示SQL表格內容的while循環內運行查詢。PHP查詢在一段時間內獲取循環

這裏是代碼,如果我不夠清晰:

$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 
} 
+0

它的工作原理!我不習慣加入請求,但我想我有時會試一試,謝謝! – Gawet

+0

歡迎您。是的,你必須。它會爲你節省時間和性能 – user2447161

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;