php mysql查询,如果用户ID作为好友存在,则删除好友请求

时间:2014-06-11 03:32:24

标签: php mysql sql mysqli

您好我一直在研究一个简单的php mysql朋友列表后端。从1个表,朋友生成用户的朋友和朋友列表和朋友请求列表。以下是朋友表中的列:

id   user_id  friend_user_id    is_confirmed     date_created

id是自解释unique auto increment int值。

user_id是最初发送好友请求的用户的唯一ai int值。

friend_user_id是接收好友请求的用户的unique ai int值。

is_confirmed是一个只能有2个值0和1的列。如果is_confirmed = 0,则user的{​​{1}}未接受好友请求specified friend_user_id ,该行仅显示在朋友请求部分中。当朋友请求被接受is_confirmed = 1并且该行应仅显示在朋友部分下。

由于某种原因,一旦接受好友请求,初始好友请求和新好友都在显示。显然,如果你已经是朋友,那么不应该是朋友请求。

下面是我的代码,用于显示朋友和朋友请求。

function displayFriends($userid){
    $result = query2("SELECT u.id, u.username
                      FROM users AS u
                      INNER JOIN friends AS f ON f.friend_user_id = u.id 
                       WHERE (f.user_id ='%s' AND f.is_confirmed=1)", $userid);

    if (!$result['error']) {
        print json_encode($result);
    } else {
         errorJson('no friends');
    }
}

function displayFriendRequests($userid){
    $result = query2("SELECT u.id, u.username
                      FROM users AS u
                      INNER JOIN friends AS f ON f.user_id = u.id
                      WHERE f.friend_user_id ='%s' AND f.is_confirmed=0", $userid);
    if (!$result['error']) {
        print json_encode($result);
    } else {    
        errorJson('no event data');
    }
}

我该怎么做才能解决这个问题? 任何帮助将不胜感激。抱歉有大量的文字。

1 个答案:

答案 0 :(得分:0)

如果这是某种单向向量,其中A朋友B但B​​必须确认A为朋友,那么您必须在正确的配对中插入一对条目,一条已确认,一条未经证实。与很多方向性的东西一样,你很容易让你的配对混乱,向后连接。

显示由给定用户发起的待处理的好友请求

SELECT users.id, users.username
  FROM friends
  INNER JOIN users ON users.id=friends.friend_user_id
  WHERE friends.user_id=? AND f.is_confirmed=0

要显示特定用户的朋友

SELECT users.id, users.username
  FROM friends
  INNER JOIN users ON users.id=friends.user_id
  WHERE friends.friend_user_id=? AND f.is_confirmed=1

我假设发起人是user_id而收件人是friend_user_id