我希望有人可以帮我解释一下我是如何写得正确的。
$details_quey = mysql_query("SELECT * FROM `accounts` WHERE ONLINE = 'true' OR FORCE_AWAY = 'true' OR AWAY = 'true' AND FORCE_OFFLINE = 'false' AND TOKEN = '$con_token' ", $CON )
任何帮助都非常感激。
答案 0 :(得分:1)
SELECT * FROM `accounts`
WHERE
(ONLINE = 'true' OR FORCE_AWAY = 'true' OR AWAY = 'true')
AND FORCE_OFFLINE = 'false' AND TOKEN = '$con_token'
猜一点,但我认为这就是你想要的。
假设你想要任何一个OR和所有AND匹配的东西
答案 1 :(得分:1)
AND
优先于SQL查询中的OR
。因此,您的查询现在正如此评估:
SELECT * FROM `accounts` WHERE
ONLINE = 'true' OR
FORCE_AWAY = 'true' OR
( AWAY = 'true' AND
FORCE_OFFLINE = 'false' AND
TOKEN = '$con_token' );
只需使用( )
对应该一起评估的条件进行分组:
SELECT * FROM `accounts` WHERE
(ONLINE = 'true' OR
FORCE_AWAY = 'true') OR
(AWAY = 'true' AND
FORCE_OFFLINE = 'false') AND
TOKEN = '$con_token' );
答案 2 :(得分:0)
"SELECT * FROM `accounts` WHERE (ONLINE = 'true' OR FORCE_AWAY = 'true' OR AWAY = 'true') AND FORCE_OFFLINE = 'false' AND TOKEN = '$con_token' ",
只需使用一些大括号来保持和/或逻辑分离。检查此人是否在线或离开或离开并且强制离线是否为false且令牌值= con token。
答案 3 :(得分:0)
不确定您要找的是什么,但括号肯定会有助于OR
:
$details_quey = mysql_query("SELECT * FROM `accounts` WHERE (ONLINE = 'true' OR FORCE_AWAY = 'true' OR AWAY = 'true') AND FORCE_OFFLINE = 'false' AND TOKEN = '$con_token' ", $CON )
答案 4 :(得分:0)
很难说出你想要完成的是什么,但是假设你想要:
(online = true OR force_away = true OR away = true) 和 force_offline = false AND token = $ con_token
您的OR需要在括号中组合在一起,否则AND将没有多大意义。
SELECT * FROM `accounts` WHERE (ONLINE = 'true' OR FORCE_AWAY = 'true' OR AWAY = 'true' AND FORCE_OFFLINE = 'false') AND TOKEN = '$con_token