2015-01-12 42 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