2013-10-13 51 views
-1

基本上,我已經創建了一張顯示mysql數據庫結果的表,還有一個用戶可以用來過濾結果的搜索框。搜索框會創建一個名爲$ query的變量。 但是,我不希望顯示的結果在數據庫中名爲「private」的列中包含字母「y」。 我知道如何顯示搜索結果,並分別隱藏私人的搜索結果,但是我無法同時讓這兩個功能同時工作。 PHP的我,此刻有這樣的:PHP mysql_query SELECT * FROM語法錯誤

$raw_results = mysql_query("SELECT * FROM file WHERE private != 'y' (`title` LIKE '%".$query."%') OR (`tags` LIKE '%".$query."%') OR (`user` LIKE '%".$query."%') ORDER BY id DESC") or die(mysql_error()); 

然而,這reterns:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`title` LIKE '%%') OR (`tags` LIKE '%%') OR (`user` LIKE '%%') ORDER BY id DESC' at line 1 

我徹底難倒我不能看到如何解決這個問題,我知道這可能是一個非常簡單的問題,但你的幫助將非常感激。由於

+0

你之前忘了AND(標題(和()包含OR)。 – LSerni

回答

2

你錯過了一個AND,並且大概幾():

$raw_results = mysql_query("SELECT * FROM file WHERE 
    private != 'y' AND (
    (title LIKE '%".$query."%') OR 
    (tags LIKE '%".$query."%') OR 
    (user LIKE '%".$query."%') 
) 
    ORDER BY id DESC" 
) or die(mysql_error()); 
+0

非常感謝你,這使它立即得到修復! – user2876946

0
$raw_results = mysql_query("SELECT * FROM file WHERE private <> 'y' and (title LIKE '%".$query."%') OR (tags LIKE '%".$query."%') OR (user LIKE '%".$query."%') ORDER BY id DESC") or die(mysql_error()); 
0

你需要包括內部()你的條件,像你的作品想 試試這個:

$raw_results = mysql_query("SELECT * FROM file 
           WHERE private != 'y' AND (
           (`title` LIKE '%".$query."%') OR 
           (`tags` LIKE '%".$query."%') OR 
           (`user` LIKE '%".$query."%') 
           ) ORDER BY id DESC") or die(mysql_error()); 
0

也許你需要AND:

WHERE private != 'y' AND ((title LIKE '%".$query."%') OR (tags LIKE '%".$query."%') OR (user LIKE '%".$query."%'))