2013-12-09 63 views
0

我下面的代碼不能正常工作:如何在PHP中做2個while循環mysqli_query?

<?php 
$result1 = mysqli_query($conn, "SELECT * FROM bicycle_list"); 
while($res1 = mysqli_fetch_assoc($result1)){ 
    $bike_id = $res1['bike_id']; 
    $result2 = mysqli_query($conn, "SELECT * FROM bicycle WHERE bicyle_id = $bike_id"); 
    while($res2 = mysqli_fetch_assoc($result2)){ 
?> 
     <td><?php echo $res2['name']; ?></td> 
<?php 
    } 
} 
?> 

如何糾正呢?

+4

「無法正常工作」**如何**?一般規則:如果您正在運行嵌套查詢,並且內部查詢依賴於來自外部查詢的值,則幾乎總是可以/應該重新編寫以使用單個'JOIN'ed查詢。 –

+0

歡迎來到Stack Overflow。要格式化代碼塊,您可以突出顯示它,然後在編輯工具欄或「ctl-k」中單擊「{}」。在引號中包含內聯代碼,對代碼塊不適用。 –

+0

我會記住這一點。我是PHP新手,不擅長sql。順便說一句,如果有的話,你能給我一個這樣的示例查詢嗎?謝謝! – Leomel

回答

3

你想使用SQL JOIN。您的基本查詢將如下所示:

SELECT * 
FROM bicycle_list INNER JOIN bicycle ON bicycle.bicycle_id = bicycle_list.bikeid; 

但是您應該確實閱讀有關SQL JOIN如何工作的教程,而不是像原樣使用此代碼。

+0

當心加入上下文中的'SELECT *'。如果他們的命名類似,很有可能會失去對聯合提取中某些列的訪問權限。一般來說,從來沒有'生產代碼中的SELECT *'。最好明確你需要的列。 –

+0

@安迪是的,我會的。非常感謝! – Leomel

+0

@MichaelBerkowski注意到謝謝! – Leomel