2015-01-12 82 views
-3

我有連接「和」和「或」在一起的問題。 這裏是我的代碼:使用「或」和「和」正確選擇

SELECT * FROM table WHERE name LIKE '$name' 
    AND color LIKE '$color' 
    OR color2 LIKE '$color2' 
    OR color3 LIKE '$color3' 
    AND gender LIKE '$gender' -- when I add those 3, search stops working. 
    OR gender2 LIKE '$gender2' 
    OR gender3 LIKE '$gender3' 

的問題是,當我添加「性別」來選擇,我的搜索停止工作......有什麼問題與雙「或」也許與定位?

+9

正確使用括號。它就像做代數一樣,你必須把圓括號放在一起。 – developerwjk

+0

使用括號來組合語句 –

+0

難道你不能選擇_one_技術嗎? –

回答

1

使用括號將您的OR和AND分隔到適當的組中。在SQL的一些附加格式將使它更明顯你的意圖是:

SELECT 
    * 
FROM 
    table 
WHERE 
    name LIKE '$name' 
    AND 
    (
     color LIKE '$color' 
     OR 
     color2 LIKE '$color2' 
     OR 
     color3 LIKE '$color3' 
    ) 
    AND 
    (
     gender LIKE '$gender' 
     OR 
     gender2 LIKE '$gender2' 
     OR 
     gender3 LIKE '$gender3' 
    ) 

最後,你不是在你的LIKE表達式中使用任何通配符。我建議僅使用=來代替,因爲它會更快。

我建議通過下面的MySQL參考文檔閱讀,瞭解了爲什麼這個作品它的方式更清晰的畫面:

還是這個Q/A位置:

+0

嗨,謝謝你的回答。我明天會看看這個。如果它有效,我會把它打成答案。 – Rainbow