2012-04-30 68 views
0

我有一个页面,它建立了一个非常长的查询,取决于$_POST变量。我试图在没有MySQL的OR的情况下尝试这样做的原因是因为我不得不重新声明整个查询,以便在最后修改一个小参数,这看起来像是浪费资源。MySQL搜索多列无OR

这是我的伪查询:

SELECT * FROM names WHERE 
person = '$var1' AND 
place = '$var2' AND 
location_a = '$var3' AND 
location_b = '$var3' 

如果我使用OR,这种脂肪丑陋的查询是:

SELECT * FROM names WHERE 
person = '$var1' AND 
place = '$var2' AND 
location_a = '$var3' OR 

person = '$var1' AND 
place = '$var2' AND 
location_b = '$var3' 

是否有可以同时搜索location_alocation_b一种方式$var3没有使用OR

+0

也许我错了,但第一个条件不匹配第二....或者有一些我错过了? –

+1

只是让你知道,如果你还没有,你不想把用户输入(从$ _POST $ _GET之类的东西)在查询中没有妥善消毒。查看mysql_real_escape_string()或PDO获取更多信息 – JoeCortopassi

回答

5

使用括号:

SELECT * FROM names WHERE 
person = '$var1' AND 
place = '$var2' AND 
(
location_a = '$var3' OR location_b = '$var3' 
) 

其实我不明白你的问题。你不必重申你的整个查询。也许你显示你的代码?关于OR有什么不好?只需使用禁忌。

+0

这是我误解正确的语法。你的回答为我解决了问题,并运作良好。谢谢。 – Norse