2012-11-18 33 views
3

我有一個簡單的搜索腳本來搜索數據庫,該數據庫應該返回所有匹配屬於該用戶的搜索查詢的數據行,但是我的查詢(下面)正在返回每行用戶。任何想法如何解決這個問題?MySQL查詢返回每個用戶的行

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

旁註:這是在PHP所以$q是保存查詢變量執行。

+0

'$ user'是一個PHP變量,對不對? – BryanH

+0

@BryanH yes它包含來自會話變量的用戶名(前面已定義) –

+2

我確定您知道sql禁止令 –

回答

2

你試過這個嗎?

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

這對於空輸入值非常有用,但是如果自己輸入空格「[SPACE]」或一個聲明「單詞[空格]」...沒有任何返回。 –

+1

@ 4cpukid,你可以提供一個例子,通過回顯查詢字符串來返回任何內容嗎? – Mike

+0

@Mike「[SPACE]」以及其中包含[SPACE]的任何內容。因此,如果我搜索「鳥類(空間)」,即使沒有第二個單詞,它甚至不會返回具有「鳥類」的行。 –

0

清除嘗試SQL查詢

+0

爲什麼白色空間會影響它? – Mike

0

前的任何空白的$用戶變量試試這個:

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

而看到輸出的樣子。

正如順便說一句,你也許可以與

WHERE title LIKE '%$q%' 

(即沒有來連接的查詢字符串)脫身。這將使您的代碼更清潔一些,並減少錯誤(缺少一段時間/報價)。