2012-11-18 3 views
3

데이터베이스에 대한 검색을 수행하는 간단한 검색 스크립트를 사용하여 해당 사용자의 검색 쿼리와 일치하는 모든 데이터 행을 반환해야하지만 내 쿼리 (아래)는 모든 행을 반환합니다. 사용자. 이 문제를 어떻게 해결할 수 있습니까?모든 사용자의 행을 반환하는 MySQL 쿼리

SELECT * FROM tablename 
WHERE title LIKE '%" . $q . "%' 
OR text LIKE '%" . $q . "%' 
AND user='$user' 

사이드 참고 다음 $q 쿼리를 보유하고있는 변수 그래서 이것은 PHP에서 실행됩니다.

+0

'$ user'는 PHP 변수입니다. 맞습니까? – BryanH

+0

@BryanH 예 (앞에서 정의한) 세션 변수의 사용자 이름이 포함되어 있습니다 –

+2

나는 SQL 문을 알고 계실 것입니다 –

답변

2

시도해 보셨습니까?

<?php 
... 
echo "SELECT * FROM tablename 
WHERE title LIKE '%" . $q . "%' 
OR text LIKE '%" . $q . "%' 
AND user='$user'"; 

을 그리고 출력이 어떻게 생겼는지 :

"SELECT * FROM tablename WHERE (title LIKE '%".$q."%' OR text LIKE '%".$q."%') AND user='$user'" 
+0

이것은 "[SPACE]"또는 " 문 "단어 [공백]"... 아무 것도 반환되지 않습니다. –

+1

@ 4cpukid, 쿼리 문자열을 반향하여 아무 것도 반환되지 않는 예제를 제공 할 수 있습니까? – Mike

+0

@Mike "[SPACE]"와 그 안에 [SPACE]가있는 것. 따라서 "새들 [SPACE]"를 검색하면 두 번째 단어가 없더라도 "새들"이있는 행을 반환하지 않습니다. –

0

취소 SQL 쿼리를

+0

공백이 왜 그것에 영향을 줍니까? – Mike

0

을 시도하기 전에 공백의 $ 사용자 변수는이보십시오.

그냥 여담으로, 당신은 아마

WHERE title LIKE '%$q%' 

(즉, 쿼리 문자열을 연결하지 않아도)와 함께 멀리 얻을 수 있습니다. 이렇게하면 코드를 조금 더 깨끗하게 유지하고 오류 (기간/견적 누락)를 줄일 수 있습니다.

관련 문제