Запрос не соответствует нескольким условиям

0

Думал, что этот запрос MySQL работает и возвращает результаты, но он игнорирует бит: where published = '1' part и показывает все результаты независимо от того, какое значение опубликовано.

Я думаю, что это имеет какое-то отношение к наличию скобок вокруг определенных бит запроса, но попробовал его различными способами и, похоже, не в состоянии понять это правильно.

Вот как у меня есть запрос на данный момент:

SELECT * 
FROM news 
WHERE published='1' 
  AND title LIKE '%$q%' 
   OR details LIKE '%$q%'
ORDER BY id DESC

Любая помощь ценится!

Теги:

1 ответ

1
Лучший ответ

Вы должны применить явные скобки:

SELECT * 
FROM news 
WHERE published='1'
  AND (title LIKE '%$q%' OR details LIKE '%$q%')
ORDER BY id DESC

В вашем примере с неявной скобкой он работал так:

WHERE (published='1' AND title LIKE '%$q%')
   OR details LIKE '%$q%'

Потому что and имеет более высокий приоритет оценки, чем or.

  • 1
    Большое спасибо - и за объяснение - оценили! Думаю, что я попробовал это, но, очевидно, не так, как сейчас работает, как следует - извинения, как это имеет смысл

Ещё вопросы

Сообщество Overcoder
Наверх
Меню