检查两个用户是php / mysql中的朋友

时间:2013-04-08 22:19:32

标签: php mysql

我在搜索之前已经搜索过,之前的热门答案无法帮助我的项目

表结构

USERS TABLE

userid |用户名

1|user1
2|user2
3|user3
4|user4
5|user5
6|user6

FRIEND TABLE

requestuserid | targetuserid

1|3
1|4
1|6
3|2
3|5
2|4
2|1

现在好了,我的问题是:

如果用户ID 1 与用户ID 2 有关系,我只会存储在用户表中,如:

1|2

不存储像

这样的副本
1|2
2|1

现在我需要检查user-x是用户-y的朋友,如果两个是朋友php将返回true,false else。 很可能,如果我的数据库存储重复1 | 2和2 | 1,但没有:(

如何处理一个查询?

2 个答案:

答案 0 :(得分:4)

您可以使用OR

来完成

SELECT 1 FROM friends WHERE (requestuserid = :id1 AND targetuserid = :id2) OR (requestuserid = :id2 AND targetuserid = :id1)

此查询将在失败时返回空集,并在成功时返回1。

答案 1 :(得分:1)

如果用户是朋友,则此查询将返回一行(使用OR忽略目标/请求用户是谁),如果他们不是朋友,则返回任何内容:

SELECT * FROM users u1, users u2, friends f
WHERE u1.userid = ?u1 AND u2.userid=?u2
AND ((u1.userid=f.requestuserid AND u2.userid=f.targetuserid)
OR (u2.userid=f.requestuserid AND u1.userid=f.targetuserid))