2013-07-31 64 views
0

我試圖顯示登錄用戶所關注的藝術家的狀態更新列表。通過mysqli結果循環

到目前爲止,我有這樣的:

#Get the list of artists that the user has liked 
$q = "SELECT * FROM artist_likes WHERE user_id = '1' "; 
$r = mysqli_query($dbc,$q); 
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { 

    #Now grab the statuses for each artist 
    $status_query = "SELECT * FROM status_updates WHERE artist_id = '".$row['artist_id']."' "; 
    $status_result = mysqli_query($dbc,$status_query) 

} 

,但我不知道如何來遍歷並顯示返回的狀態更新?

這不是我的強項,所以任何指針都將不勝感激!

+1

使用內循環的同時,像你遍歷第一個查詢的結果。 – Achrome

回答

0

只是爲了避免多次查詢,你可以使用一個這樣的查詢:

SELECT l.*, s.* 
from artist_likes l, status_updates s 
WHERE 
l.artist_id = s.artist_id and 
l.user_id = '1' 

SELECT l.*, s.* 
from artist_likes l 
JOIN status_updates s on (l.artist_id = s.artist_id) 
WHERE 
l.user_id = '1' 
+1

感謝你 - 這似乎是一個更簡單的方法。 –

3

是什麼阻止你做出類似於你已經完成的第一個查詢?喜歡的東西如下:

#Get the list of artists that the user has liked 
$q = "SELECT * FROM artist_likes WHERE user_id = '1' "; 
$r = mysqli_query($dbc,$q); 
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { 

    #Now grab the statuses for each artist 
    $status_query = "SELECT * FROM status_updates WHERE artist_id = '".$row['artist_id']."' "; 
    $status_result = mysqli_query($dbc,$status_query) 

    while($status_result_row = mysqli_fetch_assoc($status_result)) { 
    echo $status_result_row['mycol']; // This is where you know better than us 
    } 
} 

或者,如果這兩個表的artist_likesstatus_updates有共同artist_id那麼你可以只使用一個連接一個查詢。 (但不知道你是否在要求)。