Php sql“不可用”()不可用

Php sql“不可用”()不可用,php,mysql,sql,Php,Mysql,Sql,我不知道我做错了什么。。。这是我的代码: SELECT * FROM messages WHERE userId = "6" OR toUserId = "6" OR toAll = "1" AND id <> "4" ORDER BY time DESC LIMIT 1 问题是'is not'不起作用,它仍然返回id为4的结果。有什么问题吗 编辑:现在我遇到了以下问题: SELECT * FROM messages WHERE ( userId = "6" OR

我不知道我做错了什么。。。这是我的代码:

SELECT *
FROM messages
WHERE userId = "6"
OR toUserId = "6"
OR toAll = "1"
AND id <> "4"
ORDER BY time DESC
LIMIT 1
问题是'is not'不起作用,它仍然返回id为4的结果。有什么问题吗

编辑:现在我遇到了以下问题:

SELECT *
FROM messages
WHERE (
    userId = "6"
    OR toUserId = "6"
    OR toAll = "1"
)
AND id <> IN ('4','2')
ORDER BY time DESC
LIMIT 1

同样,问题是输出为false,这意味着这不起作用。

您需要使用括号来表示运算符优先级:

WHERE (
       userId   = "6"
    OR toUserId = "6"
    OR toAll    = "1"
)
AND id <> "4"

您需要使用括号来指示运算符优先级:

WHERE (
       userId   = "6"
    OR toUserId = "6"
    OR toAll    = "1"
)
AND id <> "4"

我觉得您的查询条件应该是这样的:

WHERE 
(userId = "6" OR toUserId = "6" OR toAll = "1") 
AND (id <> "4")
您的查询将被评估为:

WHERE 
  (userId = "6" OR toUserId = "6") OR (toAll = "1" AND id <> "4")

这不是您想要的。

我认为您的查询条件应该是这样的:

WHERE 
(userId = "6" OR toUserId = "6" OR toAll = "1") 
AND (id <> "4")
您的查询将被评估为:

WHERE 
  (userId = "6" OR toUserId = "6") OR (toAll = "1" AND id <> "4")
这不是你想要的