- 首先,我有一个与用户表标识符相对应的 id,然后通过 get 传递给 php。
- 我想检查:nickname.users、friends.id_friends、friends.id_adder、friends.id_adder 和friends.id_tipus,但最好的方式是检查friends.id_adder、friends.id_linked 并正确获取昵称。我编写的代码有效。
我的查询:
SELECT users.nickname,
friends.id_friends, friends.id_adder, friends.id_added, friends.id_tipus
FROM friends
LEFT JOIN users ON users.id=friends.id_added OR users.id=friends.id_adder
WHERE
(friends.id_adder='".$id."' AND (SELECT nickname FROM users WHERE id='".$id."')<>users.nickname)
OR
(friends.id_added='".$id."' AND (SELECT nickname FROM users WHERE id='".$id."')<>users.nickname);
最佳答案
我会将该查询转换为:
SELECT u1.nickname,
friends.id_friends,
friends.id_adder,
friends.id_added,
friends.id_tipus
FROM users u1
LEFT JOIN friends ON u1.id IN (friends.id_added, friends.id_adder)
LEFT JOIN users u2 ON u2.id IN (friends.id_added, friends.id_adder)
AND u2.nickname <> u1.nickname
WHERE u1.id = ?
您不应将 $id
值注入(inject) SQL 字符串,因为这会使您的代码容易受到 SQL injection 的攻击。 。而是使用 prepared statements .
关于mysql - mysql查询中查看好友的清晰方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42542779/