php mysql中的朋友建议

时间:2016-05-11 14:13:58

标签: php mysql facebook

无论建议与当前session_user之间是否有共同朋友,我都想向用户推荐一些朋友。

以下是我的尝试:

$sess = htmlspecialchars(mysqli_real_escape_string($con, $_SESSION['user_id']));

$qet = mysqli_query($con, "SELECT user.id AS id, user.name AS name, user.u_name AS u_name, user.profile_pic AS profile_pic

FROM user INNER JOIN user_friend ON (user.id = user_friend.add_by_id) OR (user.id = user_friend.add_to_id) 

WHERE (user_friend.add_to_id != '$sess' or user_friend.add_by_id != '$sess') AND (user.id != '$sess') 

ORDER BY RAND() LIMIT 1");

我的表结构:

user_friend

  
      
  1. ID
  2.   
  3. add_by_id
  4.   
  5. add_to_id
  6.   
  7. ADDED_ON
  8.   
  9. 接受
  10.   

用户

  
      
  1. ID
  2.   
  3. 名称
  4.   
  5. u_name
  6.   
  7. profile_pic
  8.   
  9. 电子邮件
  10.   
  11. 密码
  12.   
  13. 性别
  14.   

我没有得到正确的结果,它告诉我那些已经和我成为朋友的朋友(当前的session_user)。

1 个答案:

答案 0 :(得分:0)

您的要求似乎是“让当时用户不是当前用户的随机用户”。如果是这样,这将是一个更直接的SQL翻译:

SELECT user.id AS id, user.name AS name, user.u_name AS u_name, user.profile_pic AS profile_pic
FROM user
WHERE user.id <> '$sess' AND user.id NOT IN (
    SELECT DISTINCT add_by_id FROM user_friend WHERE add_to_id = '$sess'
    UNION
    SELECT DISTINCT add_to_id FROM user_friend WHERE add_by_id = '$sess'
)
ORDER BY RAND() LIMIT 1

(注意:未经测试。)

您的原始sql有一个联接,它将结果限制为已经与当前用户建立连接的用户,因此永远无法满足您的需求。 (如果我理解你的需要正确的话。)