Ignorieren Sie bestimmte WHERE-Kriterien

Ich möchte eine parametrisierte Abfrage ausführen, um eine Suche nach benutzerdefinierten Parametern durchzuführen. Es gibt eine ganze Reihe von Parametern, und nicht alle werden ständig geliefert. Wie kann ich eine Standardabfrage erstellen, die alle möglichen Parameter angibt, einige dieser Parameter jedoch ignoriert, wenn der Benutzer keinen aussagekräftigen Parameterwert ausgewählt hat?

Hier ist ein imaginäres Beispiel, um zu veranschaulichen, was ich vorhabe

$sql = 'SELECT * FROM people WHERE first_name = :first_name AND last_name = :last_name AND age = :age AND sex = :sex';
$query = $db->prepare($sql);
$query->execute(array(':first_name' => 'John', ':age' => '27');

Dies funktioniert natürlich nicht, da die Anzahl der bereitgestellten Parameter nicht mit der Anzahl der erwarteten Parameter übereinstimmt. Muss ich die Abfrage jedes Mal so erstellen, dass nur die angegebenen Parameter in der WHERE-Klausel enthalten sind, oder gibt es eine Möglichkeit, einige dieser Parameter zu ignorieren oder immer true zurückzugeben, wenn sie aktiviert sind?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage