помогите с sql запросом в скобках - PullRequest
2 голосов
/ 16 февраля 2010

у меня есть следующий код:

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)

заранее спасибо

Ответы [ 5 ]

3 голосов
/ 16 февраля 2010

Использование:

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-инъекцией .

2 голосов
/ 16 февраля 2010

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

1 голос
/ 16 февраля 2010

Вы также можете использовать

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

Не знаю, что выполняется быстрее, но это мой предпочтительный способ, потому что мне нравится, что он лучше читается.

1 голос
/ 16 февраля 2010

Используйте это:

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

Поскольку вы не хотите, если пользователь является пользователем user1 или user2, по этой причине использование «И» будет правильным вариантом здесь.

Также, если $thread не является целочисленным полем, его необходимо заключить в кавычки, например:

WHERE thread = '$thread'
0 голосов
/ 16 февраля 2010

Я думаю, вы также должны использовать <> вместо! =

Итак:

SELECT *
FROM table
WHERE thread = $thread
AND user <> $user1
AND user <> $user2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...