Исключения MySQL Query - PullRequest
       6

Исключения MySQL Query

0 голосов
/ 24 марта 2010

На одной странице должны отображаться записи, которые имеют следующий выбранный месяц из выпадающего меню и установлены в? Month = March

Таким образом, запрос сделает это

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . "' AND finished='0' ORDER BY date ASC";

Но в готовом столбце отображаются записи со значением 2, и я не хочу, чтобы запрос включал это.

Я пробовал

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . "' AND finished='0' OR finished = '1' OR finished = '3' ORDER BY date ASC";

Но он показывает записи за разные месяцы, когда это не должно быть.

Так что в основном я хочу, чтобы запись исключала записи со значением 2 в записи, которая не будет отображаться на странице.

Ответы [ 2 ]

0 голосов
/ 24 марта 2010

AND finished='0' OR finished = '1' OR finished = '3'

до

AND finished != 2

или

AND (finished = 0 OR finished = 1 OR finished = 3)

0 голосов
/ 24 марта 2010

Ваш первый запрос должен делать то, что вы хотите. Строки с finished = '2' возвращать не следует.

Игнорируя, что во втором запросе есть ошибка, которую вы, вероятно, должны исправить:

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) .
       "' AND (finished='0' OR finished = '1' OR finished = '3') ORDER BY date ASC";

Разница в скобках вокруг предложений OR, поскольку AND связывается сильнее, чем OR.

Вы также можете достичь того же результата более кратко, используя IN:

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) .
       "' AND finished IN ('0', '1', '3') ORDER BY date ASC";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...