Chcę wykonać sparametryzowaną kwerendę, aby wykonać wyszukiwanie według parametrów dostarczonych przez użytkownika. Istnieje kilka parametrów i nie wszystkie z nich będą dostarczane przez cały czas. Jak utworzyć standardowe zapytanie, które określa wszystkie możliwe parametry, ale zignorować niektóre z tych parametrów, jeśli użytkownik nie wybrał znaczącej wartości parametru?Ignoruj określone kryteria WHERE
Oto wyimaginowany przykład, aby zilustrować, co mam zamiar za
$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');
Oczywiście, to nie będzie działać, ponieważ liczba przewidzianych parametrów nie pasuje do liczby oczekiwanych parametrów. Czy muszę za każdym razem wywoływać kwerendę z tylko określonymi parametrami zawartymi w klauzuli WHERE, czy jest jakiś sposób, aby niektóre z tych parametrów były ignorowane lub zawsze zwracają wartość true, gdy są zaznaczone?
Nie sądzę, że to, co chce. Dopasuje to wartość "first_name" ma pasującą wartość lub ma wartość null. Ale z tego co rozumiem, chce, żeby 'first_name' pasowało do czegokolwiek (tak jakby w ogóle nie było klauzuli WHERE dla tej kolumny). – netcoder
@netcoder nie sprawdza, czy first_name ma wartość null, sprawdza, czy '(first_name = @var lub @var ma wartość null)' –
Och, masz rację, czytam zbyt szybko :) – netcoder