2011-03-16 4 views
0

나는 아래와 같이 mysql 테이블을 가지고 있습니다."="와 "LIKE"둘 다 사용하는 PHP mysql 쿼리

+----+-------------+-------------+-------------+-------------+ 
| Sl | Column1 | Column2 | Column3 | Column4 | 
+----+-------------+-------------+-------------+-------------+ 
| 1 | Data1A | Data2A | Data3A | xxxxxx | 
+----+-------------+-------------+-------------+-------------+ 
| 2 | Data1B | Data2B | Data3B | yyyyyy | 
+----+-------------+-------------+-------------+-------------+ 
| 3 | Data1C | Data2C | Data3C | xxxxxx | 
+----+-------------+-------------+-------------+-------------+ 
| 4 | Data1D | Data2D | Data3D | yyyyyy | 
+----+-------------+-------------+-------------+-------------+ 
| 5 | Data1E | Data2E | Data3E | xxxxxx | 
+----+-------------+-------------+-------------+-------------+ 

나는 그냥 키워드를 가진 사람들 열에 유사한 데이터를 검색 할 수 있도록, 열 1, 2 및 3에 대한 LIKE 문으로 쿼리를 만들고 싶어. 또한 col4, xxxxxx 또는 yyyyyy 특정 것입니다 결과를 필터링하려면 privilage 원하는 column4 데이터를 사용하여 결과를 필터링 할 싶습니다.

나는 구문 $query = "SELECT * FROM table WHERE Column1 LIKE'%$keyword%' OR Column2 LIKE'%$keyword%' OR Column3 LIKE'%$keyword%' AND Column4 = 'xxxxxx'";

을했다하지만이 작동하지 않는, 내 구문 $query = "SELECT * FROM table WHERE Column1 LIKE'%$keyword%' AND Column4 = 'xxxxxx'"; 잘 노력하고 있습니다.

하지만 col2와 col3의 유사점도 확인하고 싶습니다. 그러나 그것은 col4 필터링없이 결과를 내게 줄 것이다.

답변

5

나는

SELECT * FROM table WHERE 
(Column1 LIKE'%$keyword%' OR Column2 LIKE'%$keyword%' OR Column3 LIKE'%$keyword%') AND Column4 = 'xxxxxx'; 
1

귀하의 솔루션과 같이, 함께 분리 (논리합)를 그룹화에있다 ... 당신이 그렇게처럼 OR 조건 주위에 괄호를 넣어 필요가 있다고 생각 :

$query = "SELECT * FROM table WHERE (Column1 LIKE '%$keyword%' OR Column2 LIKE'%$keyword%' OR Column3 LIKE'%$keyword%') AND Column4 = 'xxxxxx'"; 
2

당신 비교 기능을 기억해야합니다. 모든 OR 조건을 그룹으로 평가 한 다음 마지막 OR 조건과 일치시켜야합니다. OR 조건을 대괄호로 묶어 그룹으로 평가해야합니다.