繁体   English   中英

带括号的SQL查询帮助

[英]help with sql query with parentheses

我有以下代码:

SELECT *
FROM table
WHERE thread = $thread
AND (user != $user1 OR user != $user2)

我希望代码选择包含$ thread的所有行,但用户不是$ user1或$ user2。

我的代码正确吗? 还是应该像这样:

SELECT *
FROM table
WHERE thread = $thread
(AND user != $user1 OR user != $user2)

提前致谢

采用:

SELECT t.*
  FROM TABLE t
 WHERE t.thread = mysql_real_escape_string($thread)
   AND t.user NOT IN (mysql_real_escape_string($user1), mysql_real_escape_string($user2))

使用mysql_real_escape_string ,否则可能会遭受SQL注入攻击

SELECT *
FROM table
WHERE thread = $thread
AND user != $user1
AND user != $user2

用这个:

SELECT *
FROM table
WHERE thread = $thread
(AND user != $user1 AND user != $user2)

因为您不希望用户是user1还是user2,因此在这里使用“ AND”将是正确的选择。

另外,如果$thread不是整数字段,则需要将其用引号引起来,例如:

WHERE thread = '$thread'

您也可以使用

SELECT *
FROM table
WHERE thread = '$thread'
AND user NOT IN ($user1, $user2)

不知道哪个执行速度更快,但这是我的首选方式,因为我喜欢它的可读性更好。

我认为您也应该使用<>代替!=

所以:

SELECT *
FROM table
WHERE thread = $thread
AND user <> $user1
AND user <> $user2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM