2017-07-10 8 views
0

ユーザーの検索条件に応じてデータベースをクエリしようとしていますが、基準の1つは登録された性別:男性または女性です。php:CASEと複数の選択によるSQLクエリ

ただし、ユーザーは条件としてmalefemaleまたはanythingとして送信できます。ユーザーがanythingを送信するとすべての行を選択しようとしていますが、空の結果が出ています。

はここに私の試験の一部です、それらのどれも動いていないようにみえますが、それは私はあなたが任意のフィルタに言及する必要はありません、ということです参照して何malefemale

$query = "SELECT * 
      FROM UsersInfo 
      WHERE gender = CASE '$et_gender' 
       WHEN 'male' THEN 'male' 
       WHEN 'female' THEN 'female' 
       WHEN 'anything' THEN 'female' AND 'male' 
          END"; 


$query = "SELECT * 
      FROM UsersInfo 
      WHERE gender = CASE '$et_gender' 
       WHEN 'male' THEN 'male' 
       WHEN 'female' THEN 'female' 
       WHEN 'anything' THEN SELECT * FROM UsersInfo 
          END"; 


$query = "SELECT * 
       FROM UsersInfo 
       WHERE gender = CASE '$et_gender' 
        WHEN 'male' THEN 'male' 
        WHEN 'female' THEN 'female' 
        WHEN 'anything' THEN * 
           END"; 
+0

WHERE句の大文字と小文字の区別の代わりにAND/ORを使用する方が一般にはるかに優れています。 – jarlh

+0

@ jarlhありがとうございました...私は非常にエキスパートではありませんので、ケースはまさに私が必要としたように聞こえました...しかし、おそらくあなたは正しいです – codeKiller

+0

クエリを画面に印刷してみてください。 –

答えて

1

あなたが試すことができ:

$query = "SELECT * 
    FROM UsersInfo 
    WHERE (gender = '$et_gender' AND '$et_gender' IN ('male', 'female')) OR ('$et_gender'='anything')" 

を私はあなたがあまりにもそれを短縮する(ただし、いくつかのチェックを行う)ことができたとした値に応じて、 :

$query = "SELECT * 
     FROM UsersInfo 
     WHERE (gender = '$et_gender') OR ('$et_gender'='anything')" 
+0

ありがとう、それはよく見えます、私は非常にSQLの専門家ではないが、私はそれを試してみます – codeKiller

1

の例のために正常に動作しますすべておよびクエリの条件はただ

SELECT * FROM UsersInfo 

(OR)

WHERE gender IN ('male','female','anything') 
よう IN演算子を使用することができ3210あなたの投稿コード使用あたり

(OR)等価演算子=

WHERE gender = '$et_gender' 
+0

no man ...例えば、ユーザーが基準で '男性 'を送信した場合、私はテーブルからMALEユーザーを取得する必要があります...'女性 'のために...そしてすべてのものは' anything'のため – codeKiller

+0

@eddie、see助けがあれば答えを編集してください – Rahul

関連する問題