php / mysql поиск нескольких значений - PullRequest
2 голосов
/ 23 апреля 2011

У меня есть таблица домов с (страна, город, район, опубликовано) полями. У меня есть форма поиска, где кто-то может ввести страну или город или область. Я хочу получить все опубликованные дома = 1, и любое из условий поиска соответствует любому из их полей.

Это то, что я имею до сих пор:

SELECT * FROM homes 
WHERE published = 1 
AND 
LOWER(country) LIKE '$search%' 
OR 
LOWER(city) LIKE '$search%'
OR
LOWER(area) LIKE '$search%'

Проблема в том, что возвращаются дома, которые опубликовали = 0 ...

Ответы [ 2 ]

3 голосов
/ 23 апреля 2011

Я бы предложил круглые скобки.

SELECT * FROM homes 
WHERE published = 1 
AND
(
 LOWER(country) LIKE '$search%' 
 OR 
 LOWER(city) LIKE '$search%'
 OR
 LOWER(area) LIKE '$search%'
)
2 голосов
/ 23 апреля 2011
SELECT * 
FROM   homes 
WHERE  published = 1 
       AND ( country LIKE '$search%' 
              OR city LIKE '$search%' 
              OR area LIKE '$search%' ) 

Как это уже делается без учета регистра, так что вам это не нужно.

Набор символов и параметры сортировки по умолчанию - latin1 и latin1_swedish_ci, поэтому при сравнении недвоичных строк по умолчанию регистр не учитывается. Это означает, что если вы ищете с col_name LIKE 'a%', вы получите все значения столбцов, которые начинаются с A или a. http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...