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。目前上面没有返回任何东西,我不确定我是否正在正确格式化/创建数组。

在这种情况下,获得正确结果的最佳方法是什么。我还需要格式化数组,以便它可以包含在另一个 MYSQL 语句中,使用IN()条件从另一个表中进行选择。

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 回答
0

您没有将所需的参数传递给mysqli_fetch_array

while($row=mysqli_fetch_array($result)))

您可以在文档中阅读更多内容。

于 2013-04-02T08:49:41.520 回答