2012-04-30 10 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の両方を検索する方法はあります$var3ORを使わずに?

+0

多分私は間違っていますが、最初の状態は2番目のものと一致しません....または私が逃した何かがありますか? –

+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については何が悪いですか?ちょうどparanthesesを使用してください。

+0

正しい構文の誤解です。あなたの答えは、私のために物事をクリアし、動作します。ありがとう。 – Norse

関連する問題