나는 다음을 가지고 있습니다 :쿼리에서 CONCAT을 사용하면 작동하지 않습니다.
검색을위한 두 가지 입력 유형. 하나는 도시, 주, 우편 번호, 유형의 텍스트 필드입니다. 다른 하나는 비즈니스 검색의 "유형"에 대한 선택 드롭 다운입니다.
"유형"입력과 함께 "위치"입력에 대한 결과를 반환하고자합니다. 따라서 사용자가 "위치"입력에서 New York NY, 83745를 검색하고 New York NY의 "type"입력 Walgreens에서만 Walgreens를 검색하면 83745가 반환됩니다. HOWEVER, 내 쿼리에 CONCAT 메서드를 사용하면이 제한이 있습니다. 사용자는 "위치"입력에서 쉼표와 공백을 사용할 수 있습니다. 그러나 "유형"입력은 모두 무시됩니다. 두 검색 유형 모두 내가 CONCAT을 꺼내서 기본 단일 WHERE 절을 사용하는 경우에만 함께 작동합니다. 그렇다면 CONCAT과 "AND style LIKE '%$search_type%'";
을 어떻게 함께 사용할 수 있습니까?
$query = "SELECT street, city, state, type FROM location
WHERE
CONCAT(city, ', ', state, ', ', zip_code) LIKE '%$search_location%'
OR CONCAT(city, ' ', state, ' ', zip_code) LIKE '%$search_location%'
AND type LIKE '%$search_type%'";
이제 ... 좋은 인덱스 활용이 될 수 없습니다. 또한 사용자 입력에 대해 매우 제한적입니다. 'AND'가 우선 순위가 높고 'OR'인지 알고 계셨습니까? 'x OR y AND z'는'x OR (y and z)'입니까? –
검색어가 짧습니다. 어쨌든 나는 그것을 알아 내고 싶다. – Graham
두 개의 'LIKE'표현을 대괄호로 묶어야한다. – Ramon