2016-05-05 53 views
-3

我試圖從2個表打印一些數據時,我嘗試執行內部while循環其沒有表現出任何結果,第二次選擇查詢
我的查詢是在PHP中使用選擇查詢while循環中

$query=mysql_query("SELECT * FROM buses"); 
echo "<table border='1'>"; 
echo "<tr>"; 
echo "<td>Sno</td>"; 
echo "<td>Route #</td>"; 
echo "<td>Bus _Type</td>"; 
echo "<td>Timing</td>"; 
echo "<td>From</td>"; 
echo "</tr>"; 
while($row=mysql_fetch_array($query)){ 
echo "<tr>"; 
echo "<td>"."<center>".$row['sno']."</center>"."</td>"; 
echo "<td>"."<center>".$row['Route']."</center>"."</td>"; 
echo "<td>"."<center>".$row['Bus_type']."</center>"."</td>"; 
echo "<td>"."<center>".substr($row['Timing'],0,5)."</center>"."</td>"; 
$route=$row['Route']; 
$query2=mysql_query("SELECT fromcity FROM routes WHERE Route= '$route' "); 
$row2=mysql_fetch_array($query2); 
echo "<td>"."<center>".$row2['fromcity']."</center>"."</td>"; 

路由表

enter image description here

總線表

enter image description here

結果

Not showing Data Of From city Field

+0

噢,上帝,標記......在做代碼塊時,在它前面留下4個空格,不要使用返回刻度...我已經爲您完成了前三行。請編輯您的問題以整理它。 – Styphon

+0

我回顧一下$ route變量的值,像這樣$ route = $ row ['Route']; –

+1

[Little Bobby](http://bobby-tables.com/)說[你的腳本存在SQL注入攻擊的風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent -sql噴射在-PHP)。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –

回答

0

您可以繼續使用您的解決方案,但爲了提高效率,你不應該做一個SELECT在一個循環中,你應該使用一個SQL JOIN。

您的查詢應在路線字段連接兩個表:

SELECT * FROM buses b 
INNER JOIN routes r ON b.Route = r.Route; 

沒有額外查詢都需要在循環中,你將不得不從該查詢訪問fromcity。您可能希望在SELECT中專門聲明這些字段,而不是使用*

+0

如何打印此查詢的結果 –

+0

那麼,如何打印任何查詢的結果呢? 'print_r(mysql_fetch_array($ query))'會打印出第一行,所以你可以看到內容。我強烈要求你聽取其他建議,並停止使用mysql_函數。學習PDO。 – Devon

+0

我試圖打印結果,但沒有顯示離開城市的價值 –