添加到基于条件php的数组

时间:2013-04-02 08:46:22

标签: php mysql arrays

数据库表:

 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语句中,以便从另一个表中进行选择。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

您可以阅读更多in the documentation.