1

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

你如何让他们工作?

上面定义:

$friends = mysql_query("SELECT * FROM friend 

WHERE u1='$userinfo[username]' OR 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

4 回答 4

3

不会 GROUP Concat 工作?

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

于 2011-09-26T16:09:08.020 回答
1

您始终可以使用子选择并将其传递给IN()操作员。

于 2010-01-16T12:17:59.993 回答
1

我认为你加入了错误的事情。你加入了整个朋友 ROW,所以结果是 '1,Johnny,23years,etc'。我假设您想要好友 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
于 2010-01-16T12:22:04.943 回答
0

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

于 2010-01-16T12:19:10.430 回答