php / mysql поиск нескольких значений

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

Это то, что у меня есть до сих пор:

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

Проблема в том, что он возвращает дома, опубликовавшие = 0 …

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

 SELECT * FROM homes WHERE published = 1 AND ( LOWER(country) LIKE '$search%' OR LOWER(city) LIKE '$search%' OR LOWER(area) LIKE '$search%' ) 
 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