2010-01-16 39 views
1

implode()函數在普通數組上工作,但它不適用於用mysql_fetch_array創建的數組(我也試過mysql_fetch_row)你如何加入(implode)MySQL數組?

如何讓它們工作?

以上定義:

$friends = mysql_query("SELECT * FROM friend 

WHERE U1 = '$用戶信息[用戶名]' 或U2 = '$用戶信息[用戶名]'「);

進一步回落:

$friendsrow = mysql_fetch_array($friends); 
$friendsrow = join(",",$friendsrow); 

$friendnotes = mysql_query("SELECT nid,user,subject,message FROM friendnote WHERE user IN ($friendsrow) ORDER BY timestamp ASC LIMIT 0,5"); 

(如果您想知道,那是針對社區網站的)

回答

1

您可以隨時使用sub-sel並將其傳遞給IN()運營商。

0

mysql_fetch_array返回正常數組,它們沒有什麼特別之處。也許你的查詢沒有返回任何東西,在這種情況下mysql_fetch_array返回false。在試圖破壞結果之前檢查一下。

1

我認爲你加入了錯誤的事情。你加入了整個朋友ROW,所以結果是'1,約翰尼,23年等'。我假設你想要一個朋友ID'1,2,3,4,5'的列表。正如Eimantas所說,最好使用子查詢。

SELECT nid,user,subject,message 
FROM friendnote 
WHERE user IN ((SELECT u2 FROM friends WHERE u1 = $userinfo[username]) 
       UNION 
       (SELECT u1 FROM friends WHERE u2 = $userinfo[username])) 
ORDER BY timestamp ASC LIMIT 0,5 
+0

謝謝,錯誤消失,但實際的劇本似乎並沒有做任何事情=( 我用: $ friendnotes =請求mysql_query(「SELECT NID,用戶,主題,郵件 FROM friendnote WHERE用戶( 'SELECT U1,U2 朋友 WHERE U1 = $用戶信息[用戶名]或U2 = $用戶信息[用戶名]') ORDER BY時間戳 ASC LIMIT 0,5" ); 當我嘗試使用MySQL函數,如mysql_fetch_arra y()它不會返回任何錯誤,但也不會返回任何結果(並且是的,我知道數據庫中與WHERE匹配的條目) – Ryan 2010-01-16 14:33:52

+0

請參閱已更新的查詢。 – 2010-01-16 14:46:33