2014-03-02 339 views
0

我在MySQL兩個表,一個商店都有一個主ID鍵,但不同的細節中,比如:while循環while循環的MySQL

table 1: | id | name | type | 

table 2: | id | secondary id | more dateails | 

簡化代碼,我使用的是:

$status = $mysqli->query("SELECT * FROM `table1`"); 

while($rows = $status->fetch_array(MYSQLI_BOTH)) 
{ 
    $id = $rows['id']; 
    $conts_q = $mysqli->query("SELECT * FROM `table2` WHERE id='$id'"); 
    $conts_numr = $conts_q->num_rows; 

    if($conts_numr==0) 
    { 
     //Display empty 
    } 
    else 
    { 
     while($row2 = $conts_q->fetch_array(MYSQLI_BOTH)) 
     { 
      //Get details and display 
     } 
    } 
} 

如果第二個表沒有內容,它會顯示它很好,但是如果是這樣,它會顯示每個id的所有內容,而不僅僅是與它相關的所有內容,我似乎無法找到我做錯了。如果我發佈的代碼不夠用,我會在這裏發佈完整的原始代碼。

+9

[學習'JOIN'而不是專門製作2個不必要的循環的時間。示例:'SELECT t1.name,t1.type,t2.details FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.referencedidfromtable1 WHERE t1.id ='$ id''](http://stackoverflow.com/問題/ 7877720/the-best-tutorial-on-join-in-mysql) – Prix

+2

向服務器顯示一些愛,並使用JOIN。 – Shomz

+2

請**正確地縮進您的代碼**。你在尋求幫助,讓你的帖子儘可能可讀。我已經爲你做了這次:) –

回答

2

正如評論指出,獲得這個數據的最佳方式是使用JOIN

SELECT * FROM `table1` t1 
INNER JOIN `table2` t2 ON t1.id = t2.id 

您可能需要按摩返回的欄目等。