php sql запрос: операторы AND, OR работают некорректно - PullRequest
0 голосов
/ 07 мая 2020

У меня большой запрос, но я немного упрощу его, указав только на релевантные вещи.

Запрос.

 $sql = "SELECT * 
        FROM articles a 
        WHERE a.published=1 
        OR a.published=0 
        AND a.title LIKE '%$keyword%' 
        OR a.summary LIKE '%$keyword%';

То, что я не могу понять, это И и ИЛИ, в приведенном выше примере я хочу показать все статьи, где опубликовано либо 0, либо 1, а заголовок должен содержать «Lorum» или «резюме» ДОЛЖЕН содержать «Lorum».

Сейчас, когда я запускаю запрос, который он возвращает мне все статьи, даже те, которые не соответствуют ключевому слову, это из-за оператора OR с a.published, я знаю это, потому что, когда я удаляю эту часть, запрос работает нормально.

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Вам просто нужно включить круглые скобки в свой оператор SQL, чтобы сгруппировать операторы, например,

$sql = "SELECT * 
        FROM articles a 
        WHERE (a.published=1 OR a.published=0) 
        AND (a.title LIKE '%$keyword%' OR a.summary LIKE '%$keyword%');
0 голосов
/ 07 мая 2020

Используйте команду IN, чтобы сгруппировать ваши опубликованные в 1 logi c.

    $sql = "SELECT * FROM articles a WHERE a.published IN (1,0) AND a.title LIKE '%$keyword%' 
 OR a.summary LIKE '%$keyword%';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...