数据库表:
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语句中,以便从另一个表中进行选择。
答案 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.