【问题标题】:friend suggestion in php mysqlphp mysql中的朋友建议
【发布时间】:2016-05-11 22:54:26
【问题描述】:

我想随机推荐一些好友给用户,不管suggestions和当前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");

我的表结构:

用户朋友

  1. 身份证
  2. add_by_id
  3. add_to_id
  4. add_on
  5. 接受

用户

  1. 身份证
  2. 姓名
  3. u_name
  4. profile_pic
  5. 电子邮件
  6. 密码
  7. 性别

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

【问题讨论】:

  • where (user_friend.add_to_id != '$sess' or user_friend.add_by_id != '$sess') 看起来不对,我猜它可能是 and (取决于表中准确描述的内容)。你可能想添加一个distinct

标签: php mysql facebook


【解决方案1】:

您的要求似乎是“获取一个还不是当前用户朋友的随机用户”。如果是这样,这将是一个更直接的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 有一个连接,该连接将结果限制为已经与当前用户建立连接的用户,因此永远无法为您提供您想要的。 (如果我正确理解了您的需求。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多