Игнорировать определенные критерии WHERE

Я хочу выполнить параметризованный запрос для поиска по параметрам, предоставленным пользователем -. Параметров довольно много, и не все из них будут подаваться постоянно. Как сделать стандартный запрос, в котором указаны все возможные параметры, но игнорировать некоторые из этих параметров, если пользователь не выбрал осмысленное значение параметра?

Вот воображаемый пример, иллюстрирующий то, к чему я стремлюсь

$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');

Очевидно, что это не сработает, потому что количество предоставленных параметров не соответствует количеству ожидаемых параметров. Должен ли я каждый раз создавать запрос только с указанными параметрами, включенными в предложение WHERE, или есть способ заставить некоторые из этих параметров игнорироваться или всегда возвращать значение true при проверке?

5
задан kotekzot 27 June 2012 в 17:10
поделиться