ユーザー指定のパラメータで検索を実行するために、パラメータ化されたクエリを実行します。かなりの数のパラメータがあり、それらのすべてが常に供給されるわけではありません。可能なすべてのパラメータを指定する標準クエリを作成するにはどうすればよいですか?ユーザが意味のあるパラメータ値を選択しなかった場合は、これらのパラメータのいくつかを無視しますか?提供されたパラメータの数が予想されるパラメータの数と一致しないため、特定の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を返す方法がありますか?
を私は彼が望んでいるものだとは思いません。これは、 'first_name'が一致する値を持つか、それがnullの場合に一致します。しかし、私が理解しているように、彼は 'first_name'を何でも一致させたいと思っています(その列にWHERE句がまったくないように)。 – netcoder
@netcoder first_nameがヌルかどうかをチェックしていません。 '(first_name = @varまたは@varがヌルであるかどうかを確認しています)' –
ああ、そうです、あまりにも速く読んでいます:) – netcoder