1

implode() 関数は通常の配列では機能しますが、mysql_fetch_array で作成された配列では機能しません (mysql_fetch_row も試しました)。

それらをどのように機能させますか?

上で定義:

$friends = mysql_query("SELECT * FROM friend 

WHERE u1='$userinfo[ユーザー名]' OR u2='$userinfo[ユーザー名]' ");

そしてさらに下:

$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 に答える