私はいくつかのパラメータを持つ PHP メソッドを持っていますが、それらはすべてオプションです。SQL クエリはこれらのパラメーターを使用して、各パラメーターがスキル/役割のような従業員のデータベースから選択します。次のようになります。
getMedicalStaff($active = 1, $consultant = 0, $ana = 0, $outreach = 0, $prescribedBy = 0, $respiteCare = 0)
各パラメーターが必要な場合と必要でない場合があることを念頭に置いて、データベースから行を選択するための SQL クエリを作成する最良の方法は何ですか? このメソッドを呼び出して何も要求しないことが理論的には可能であることは承知していますが、実際にはそうはなりません。
いくつかの異なる方法を試しましたが、適切に機能するものはありません。私の最初の試みは次のようなものでした:
// Build query
$argActive = ($active == 1) ? 'true' : 'false';
SELECT * FROM MedStaff WHERE Active = $argActive
しかし、特定のフィールドの値が問題にならない場合に、そのフィールドを明示的に false にする必要があるため、これには明らかに欠陥があります。
次に試したのは、次のように SQL クエリを作成することでした。
$argActive = (active == 1) ? 'active = true' : '';
しかし、次の引数変数に実際に何かが含まれているかどうかを知らずに、AND を使用して各引数変数間のギャップを埋めなければなりません。
私もこれを試しました:
$argActive = ($active == 1) ? '= true' : 'IS NULL';
$sql = "SELECT * FROM MedStaff WHERE Active $argActive
問題は、データベース フィールドが「空」であっても明示的に NULL であることを保証できない (データベース設計を継承した) ため、これが機能していないように見えることです。
私のジレンマを解決する最善の方法は何ですか? これは、以前に何度も遭遇した問題のように感じられ、標準的に受け入れられた回答が必要ですが、グーグルで機能するものを見つけることができませんでした.