2011-04-22 3 views
2

(국가, 도시, 지역, 게시 됨) 필드가있는 테이블 홈이 있습니다. 나는 누군가가 국가 나 도시 또는 지역을 입력 할 수있는 검색 양식을 가지고있다. 나는 모든 집을 출판하기를 원한다. = 1이고 어떤 검색어도 그들의 필드와 일치한다. PHP/mysql이 여러 값을 검색합니다.

내가 지금까지 무엇을 가지고 ...

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

문제는 그것이 = 0 게시 한 가정을 반환한다는 것입니다

등 이미 소문자를 구분하지 않는 물건을 수행

답변

3

괄호를 제안합니다.

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

+0

.......... Jinx! – tamarintech

+0

내 기본 문자 집합은 UTF-8이며 데이터 정렬은 utf_general_ci입니다. 나는 LOWER()가 필요하다고 생각한다. – chchrist

관련 문제