Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] pdo i bindvalue
Forum PHP.pl > Forum > Przedszkole
wojtekw
czy w pdo można warunkowo podawać parametry w pytaniu select, czy trzeba sklejać stringa pytającego ?
Chodzi mi o coś takiego:

  1. SELECT * FROM tab WHERE nazwa1=:nazwa1 AND nazwa2=:nazwa2 AND nazwa3=:nazwa3


i teraz jeśli mam spełnione jakieś warunki binduje te 3 parametry. Ale jeśli są niespełnione to tego warunku powinno nie być lub też dla poszczególnych parametrów wyrzucić je z where'a.
nospor
musisz sam tworzyc wlasciwego selecta na podstawie warunkow. Niby skad PDO ma wiedziec ze ma ci akurat usunac ten a ten warunek. PDO tylko podczepia sie pod parametry co mu kazesz.
wojtekw
Cytat(nospor @ 11.03.2008, 13:04:31 ) *
Niby skad PDO ma wiedziec ze ma ci akurat usunac ten a ten warunek.

no właśnie stąd że nie zbinduję tej zmiennej przed wywołaniem zapytania.
nospor
ale skad PDO ma wiedziec ze jesli nie zbindujesz :nazwa3 to ona ma usuanc warunek "and nazwa3=:nazwa3 " ? No skad on ma to wiedziec? Uwierz mi, ale PDO nie czyta ci w myslach smile.gif

Podsumowujac: musisz sam tworzyc zapytania takie jakie maja byc.
wojtekw
Cytat(nospor @ 11.03.2008, 13:44:24 ) *
ale skad PDO ma wiedziec ze jesli nie zbindujesz :nazwa3 to ona ma usuanc warunek "and nazwa3=:nazwa3 " ? No skad on ma to wiedziec? Uwierz mi, ale PDO nie czyta ci w myslach smile.gif

Podsumowujac: musisz sam tworzyc zapytania takie jakie maja byc.

No więc tak, myślałem sobie że ktoś kto to tworzył powiedział bibliotece tak:

Gdy zostanie przygotowane zapytanie select z parametrami w klauzuli where to zamiast wartości człowiek napisze dwukropek i nazwę jakiejś zmiennej której przypiszę wartość przed wywołaniem zapytania. Natomiast jeśli tej zmiennej nic nie przepisze to pomiń ją i nie uzywaj w where bo jednak jak się okazuje w tym przypadku w danym momencie jest niepotrzebna. tak sobie to pomyślałem smile.gif


Ale cóż nie ja PDO budowałem więc się dostosuję.
nospor
to sobie teraz pomysl ze masz taki warunek
... and pole1=1 and nazwa3=:nazwa3
gdzie pole1=1 dodajesz tez tylko wtedy gdy masz :nazwa3
Skad ten biedny ktos kto tworzyl PDO ma wiedziec ze chcesz rowniez usunac ten warunek pole1=1 ktory pojawia sie tylko z :nazwa3

Wymyslasz chlopie w tej chwili bez zastanowienia sie nad tym ze jest to praktycznie nie mozliwe do zrealizowania tej Twojej zachcianki smile.gif

edit down: widze ze dyskusja z Tobą prowadzi do nikąd. Ja juz wiec podziękuje.
wojtekw
Cytat(nospor @ 11.03.2008, 14:00:22 ) *
to sobie teraz pomysl ze masz taki warunek
... and pole1=1 and nazwa3=:nazwa3
gdzie pole1=1 dodajesz tez tylko wtedy gdy masz :nazwa3
Wymyslasz chlopie w tej chwili bez zastanowienia sie nad tym ze jest to praktycznie nie mozliwe do zrealizowania tej Twojej zachcianki smile.gif


A to jaki problem żeby to zapytanie przy braku nazwa3 kończyło się tak:
... and pole1=1.
bo ja dokładnie tak zrobić. Sorry długo nie bawiłem się php, ale nie widzę nic nielogicznego w stwierdzeniu:
"Jeśli klient nie powie ci jaki chce mieć kolor samochodu to daj mu dowolny."
,a PDO robi tak
"Jeśli klient nie powie ci jaki chce mieć kolor samochodu to samochodu nie sprzedawaj."
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.