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");
(如果您想知道,那是社区网站)
答案 0 :(得分:3)
GROUP Concat不会有效吗?
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
答案 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
。在尝试破坏结果之前检查一下。