Это мой SQL, и данные подаются PHP
SELECT COUNT(*) FROM table
WHERE approve='true' AND `description`like '%".$name."%' OR `name`like '%".$name."%' OR `location` like '%".$location."%'
Я могу просматривать записи, где approve
есть false
, когда обрабатываю этот запрос.
ИЛИ как использовать И и ИЛИ в одном выражении
этот sql должен содержать строки, которые утверждают = «истина», а теперь ищут описание и другие столбцы
В настоящее время он работает как approve='true' AND
описаниеlike '%".$name."%'
, затем or
, name like '%".$name."%'
, or
и location like '%".$location."%'
. Сгруппируйте биты or
вместе, чтобы они были необязательными битами, как указано в ответе ниже.
Я обновил вопрос, как я думаю, он должен был быть написан, пожалуйста, исправьте, если это неверно.
Вероятно, условия OR
ed должны заключаться в круглые скобки:
SELECT COUNT(*)
FROM table
WHERE
approve = 'true'
AND (
`description` like CONCAT('%', :name, '%')
OR `name` like CONCAT('%', :name, '%')
OR `location` like CONCAT('%', :location, '%')
)
(Я бы заменил заполнители на ?
на случай, если mysqli
используется)
Какие ошибки вы получаете? Вы, вероятно, открыты для SQL-инъекций с этим кодом. Возможно, вам нужно использовать группировки
()
, потому чтоand
будет конфликтовать с утверждениямиor
.