Как проверить значение сразу в нескольких столбцах?

Доброго времени суток.
Есть текстовый input, куда пользователь вводит адрес.
<input type="text" name="address" placeholder="Улица, Район, Округ">

Как правильно написать запрос, чтобы значения в этом поле искалось сразу по нескольким колонкам в таблице БД ?
Делаю так:
$query = "SELECT * FROM `objects` WHERE `bid_type`='$bid_type' AND `object_type`='$object_type' AND `address` LIKE '%$address%' AND `okrug` LIKE '%$address%'";

Но постоянно приходит false в результате.

Как правильно написать запрос, чтобы значение в input искалось сразу в трёх-четырех колонках и выводились все найденные результаты
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
idShura
@idShura
Если поля bid_type и object_type не относятся к address и okrug, то так:

SELECT * FROM `objects` 
 WHERE `bid_type`='$bid_type' 
   AND `object_type`='$object_type' 
   AND (`address` LIKE '%$address%' 
    OR `okrug` LIKE '%$address%')
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
ns174ru
@ns174ru
https://ns174.ru
Все AND замените на OR

И будет вам "Щастье"
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Все новички поголовно думают, что их запрос применяется ко всей БД разом.
Ну и размеется хотят найти строки, в которых И адрес, И округ равны какому-то значению.

Но если подумать, то запрос сравнивает с условием каждую строку по отдельности.
И AND будет искать строку, в которой в которой и адрес, и округ равны этому значению.
В то время как им нужно чтобы вернулась каждая строка, в которой адрес ИЛИ округ был равен какому-то значению.

То есть вместо AND при поиске "по нескольким колонкам" надо использовать OR.

Разумеется, это не касается прочих условий, использованных в запросе. Они они остаются как есть, а поиск "по нескольким полям" просто берется в скобки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы