2

データベース テーブル:

 Table Name: friends

   user_id   |  friend_id  |  accepted  |  key_id  
 --------------------------------------------------
    123      |    234      |     2      |    1     
    123      |    456      |     2      |    2
    123      |    789      |     1      |    3     
    222      |    123      |     2      |    4     
    498      |    123      |     2      |    5     

最初のクエリ(確認済みの友達を取得するため)

$user_id=123;
$query="SELECT * FROM friends WHERE
    (user_id='$user_id' OR friend_id='$user_id')
    AND accepted='2'";
$result=mysqli_query($dbc, $query);
while($row=mysqli_fetch_array($result))
{
   if($row['user_id']==$user_id)
   {
       $friend[]=$row['friend_id'];
   }
   if($row['friend_id']==$user_id)
   {
       $friend[]=$row['user_id'];
   }
}

print_r($friend);

私がやろうとしているfriendのは、一致する ID を配列に設定することです。ここで、user_id が と等しい$user_idか、friend_id が等しく$user_id、受け入れられた値は 2 です。現在、上記は何も返さず、私が配列を正しくフォーマット/作成しています。

この場合、正しい結果を達成するための最良の方法は何でしょうか。IN()また、別のテーブルから選択する条件を使用して別の MYSQL ステートメントに含めることができるように、配列をフォーマットする必要があります。

4

2 に答える 2

1

クエリは次のようになります

$query="SELECT *
        FROM friends
        WHERE (user_id = $user_id OR friend_id = $user_id)
        AND accepted = '2'";

文字列ではなく整数を指定する必要があることに注意してください。レコードを正しく取得しています。

出力

key_id  user_id friend_id   accepted
-------------------------------------
1       123     234         2
2       123     456         2
4       222     123         2
5       489     123         2
于 2013-04-02T08:56:59.997 に答える