你如何加入(内爆)MySQL数组?

时间:2010-01-16 12:13:20

标签: php mysql implode

implode()函数适用于普通数组,但它不适用于使用mysql_fetch_array创建的数组(我也尝试过mysql_fetch_row)

你如何让他们工作?

定义如上:

$friends = mysql_query("SELECT * FROM friend 

WHERE u1 ='$ userinfo [username]' 或者u2 ='$ userinfo [username]'“);

进一步向下:

$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");

(如果您想知道,那是社区网站)

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

您始终可以使用子选择并将其传递给IN()运算符。

答案 2 :(得分:1)

我认为你加入了错误的事情。你加入了整个朋友ROW,结果是'1,Johnny,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

答案 3 :(得分:0)

mysql_fetch_array返回普通数组,没有什么特别之处。也许您的查询没有返回任何内容,在这种情况下,mysql_fetch_array返回false。在尝试破坏结果之前检查一下。