2014-07-09 2 views
0

interger 사용자 유형 필드 (admin 또는 normal)를 포함한 여러 필드가있는 MySQL 사용자 테이블이 있습니다. 나는 모든 필드에 있지만 함께 문자열을 주어진 검색 할 수있는 마스터 검색을 찾고 오전 곳 (특정 유형의) 사용자 유형의 절MySQL : 특정 유형 필드의 모든 필드 검색

내가

$sql = "SELECT * FROM users WHERE user_fname like '%".$data."%' OR user_lname like '%".$data."%' OR user_login like '%".$data."%' OR user_callsign like '%".$data."%' AND user_type='2'"; 

사용하고

하지만, 그것을 검색 할 때 내 user_type 절을 무시하고 전체 테이블을 쿼리하십시오. 아이디어가 부족합니다. 제게이 일이 어떻게 끝날지 제안 해주세요.

감사합니다, 당신은 (all ORs)처럼 OR 조건을 정리하고 당신은 괄호로 할 필요가 방치 user_type='2' 및 일부

$sql = "SELECT * FROM users 
WHERE (user_fname like '%".$data."%' 
OR user_lname like '%".$data."%' 
OR user_login like '%".$data."%' 
OR user_callsign like '%".$data."%') 
AND user_type='2'"; 
+0

user_type 필드는 정수 유형이므로 작은 따옴표를 제거하십시오. –

답변

3

. 또는를위한 작업의 순서와 그리고 그것은 왼쪽에서 갈거야 의미하는 동일한 권리

조회에 더 같이해야

:

또한
SELECT  * 
FROM users 
WHERE (user_fname like '%".$data."%' 
OR  user_lname like '%".$data."%' 
OR  user_login like '%".$data."%' 
OR  user_callsign like '%".$data."%') 
AND  user_type='2' 

당신은 당신의 입력을 살균 및/또는 준비를 사용해야합니다 검색어. 그렇지 않으면 방대한 SQL 인젝션 공격을받을 수 있습니다.

PDO 또는 MySQLi를 사용해야합니다 (필요한 경우).

+1

완벽! 너무 단순합니다. 감사합니다. 시간을 절약했습니다. –

0

있도록 다음 AND 필터를 적용 할 필요가

0
$sql = "SELECT * FROM users WHERE (user_fname like '%".$data."%' OR user_lname like '%".$data."%' OR user_login like '%".$data."%' OR user_callsign like '%".$data."%') AND user_type='2'"; 
+0

답변에 약간의 설명을 추가 할 수 있습니까? 질문자를 돕는 데 먼 길을 간다! – msturdy

관련 문제