2012-04-30 108 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