我遇到连接问题"和"和"或"一起。 这是我的代码:
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'
问题在于,当我添加"性别"选择,我的搜索停止工作...双重"或"是否有问题或者可能有定位?
答案 0 :(得分: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:
答案 1 :(得分:0)
我建议使用括号使事情变得更加明显。
您应该查看运算符优先级(http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html)以查看将首先评估哪个语句,第二个等。括号使这更加明确。
我打算发布固定的SQL,但Cory已经完成了