2012-11-18 2 views
1

양식의 사용자 입력을 사용하여 MySQL 데이터베이스 테이블에서 여러 열을 검색하는 데 문제가 있습니다. 데이터베이스에MySQL SELECT 문이 테이블의 3 개 필드 만 검색했습니다.

표는 차량을 불러 4 개 필드/열을 가지고있다 : 년, 만들기, 모델 및 옵션

사용자 내가 $ 입력 변수에 넣어 양식에서 자신의 검색 조건을 입력합니다.

아래 코드는 작동하지 않습니다. 내가 마지막 OR 쿼리에서 제거 할 때, 그것은 잘 작동하지만 올해는 만들 검색하고 모델 필드, 그러나

(Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given) 

$query = ("SELECT * FROM vehicles WHERE year LIKE '%$input%' OR make LIKE '%$input%' OR model LIKE '%$input%' OR option LIKE '%$input%'"); 

$result = mysql_query($query); 

:

$query = ("SELECT * FROM vehicles WHERE year LIKE '%$input%' OR make LIKE '%$input%' OR model LIKE '%$input%'"); 

$result = mysql_query($query); 

할 방법이 부울 오류를 반환 4 개의 필드/열 모두를 검색하는 쿼리가 있습니까? 내가 뭘 놓치고 있니?

전체 테이블 (테이블의 모든 열)을 쉽게 검색 할 수있는 방법이 있습니까?

정말 감사드립니다.

답변

3

"option"은 mysql의 예약어로 see here입니다. 따라서 쿼리가 실제로 실패하고 리소스 대신 부울 false를 반환합니다. 이

$query = ("SELECT * FROM vehicles WHERE year LIKE '%$input%' OR make LIKE '%$input%' OR model LIKE '%$input%' OR `option` LIKE '%$input%'"); 

같은 주변의 열 또는 사용을``이름 바꾸기 또한 SQL Injection에 대한 안전을 위해 탈출 적절한 사용하십시오.

+0

빠른 답장을 보내 주셔서 감사합니다. 나는 OPTION 대신 OPTION으로 컬럼을 변경했고 매력처럼 작동합니다! 나는 그것이 단순한 무엇인지 알았다. 대단히 감사합니다! – user1833698

+0

당신을 환영합니다;). 이것을 해결 해답으로 표시하는 것을 잊지 마십시오. –

관련 문제