Почему в запросе не выполняются все условия?

Рейтинг: 0Ответов: 1Опубликовано: 16.02.2015

Существует запрос:

$query = 'SELECT * FROM posts WHERE post_type = "post" AND post_status = "publish" AND post_content LIKE "%'.$search_string.'%" OR post_title LIKE "%'.$search_string.'%"';

Мне нужно собрать из таблицы posts данные с условиями выше. Чтобы не возникло вопросов, опишу то, что хочу сделать. Поверить, является ли пост собственно постом, проверить, опубликован ли пост и есть ли соответствие по запросу в контенте поста либо в заголовке.

В итоге я получаю работающими два последних условия (проверку на соответствия в контенте и заголовке). Все остальные игнорируются.

Ответы

▲ 3

Ну правильнее было бы так:

$sql = ' ...
  WHERE 1
    AND post_type = "post"
    AND post_status = "publish"
    AND (
        post_content LIKE "%'.$search_string.'%"
        OR post_title LIKE "%'.$search_string.'%"
    )
';