Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Wyszukiwanie rekordów + prepared statment
barthez
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 10.04.2006

Ostrzeżenie: (0%)
-----


Witam.
Jak prawidłowo skonstruować prepared statment do wyszukiwań.
Mam formularz z możliwością wyszukania po 7 polach, mam starszą bazę, niestety używam do tego like.
Później w zmiennej GET przesyłam informuje db co należy wyszukać.
Jak dobrze zbudować prepared statment jeśli z 7 dostępnych opcji wuszukiwania chce niezależnie wyszukiwać od 1 do 7 opcji.
W zwykłym zapytaniu nie widzę problemu, ale poprzez prepared statment jak przygotować zapytanie i je wykonać ze zmianną iloscia "?"

Ten post edytował barthez 2.09.2012, 09:48:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
athei
post
Post #2





Grupa: Zarejestrowani
Postów: 389
Pomógł: 141
Dołączył: 11.04.2009

Ostrzeżenie: (0%)
-----


Z czym masz problem? Z PDO i like link ?
Go to the top of the page
+Quote Post
barthez
post
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 10.04.2006

Ostrzeżenie: (0%)
-----


Dzięki, za naprowadzenie, nie wiedziałem, że tak po prostu można...
Niestety nie wiem jak rozgryźć kolejny problem.
Jak przygotować formularz wyszukiwania ewentualnie czy przygotować kilka formularzy wyszukań, mam z tym problem.
Chciałbym aby był jeden formularz, i żeby wyniki wyszukania były zależne od danych wysłanych z formularza. Po prostu mam na sztywno takie zapytanie
  1. SELECT DISTINCT w.name, w.surename
  2. FROM workers w
  3. INNER JOIN workers_languages wl USING (pesel)
  4. INNER JOIN workers_privilages wp USING (pesel)
  5. INNER JOIN workers_skills ws USING (pesel)
  6. INNER JOIN workers_occupation wo USING (pesel)
  7. WHERE wl.shortname LIKE '%' AND wp.shortname LIKE '%' AND ws.shortname LIKE '%' AND wo.lev0 LIKE '%'
  8.  
  9.  
  10.  

Załóżmy że w formularzu wpisano wyłącznie do wyszukania uprawnienie = 131 to wyszuka według
  1. SELECT DISTINCT w.name, w.surename
  2. FROM workers w
  3. INNER JOIN workers_languages wl USING (pesel)
  4. INNER JOIN workers_privilages wp USING (pesel)
  5. INNER JOIN workers_skills ws USING (pesel)
  6. INNER JOIN workers_occupation wo USING (pesel)
  7. WHERE wl.shortname LIKE '%' AND wp.shortname LIKE '131' AND ws.shortname LIKE '%' AND wo.lev0 LIKE '%'
  8.  
  9.  
  10.  


a mnie interesowałoby aby zapytanie w tym wypadku wyglądało
  1. SELECT DISTINCT w.name, w.surename
  2. FROM workers w
  3.  
  4. INNER JOIN workers_privilages wp USING (pesel)
  5.  
  6. WHERE wp.shortname LIKE '131'


Ten post edytował barthez 2.09.2012, 18:39:18
Go to the top of the page
+Quote Post
athei
post
Post #4





Grupa: Zarejestrowani
Postów: 389
Pomógł: 141
Dołączył: 11.04.2009

Ostrzeżenie: (0%)
-----


  1. $sql = "SELECT DISTINCT w.name, w.surename
  2. FROM workers w ";
  3. if (isset($costam1)) {
  4. $sql .= " INNER JOIN workers_languages wl USING (pesel) ";
  5. }
  6. if (isset($costam2)) {
  7. $sql .= " INNER JOIN workers_privilages wp USING (pesel) ";
  8. }
  9. itd...
  10. $sql .= "WHERE 1 ";
  11. if (isset($costam1)) {
  12. $sql .= " AND wl.shortname LIKE :costam1 ";
  13. }
  14. if (isset($costam2)) {
  15. $sql .= " AND wp.shortname LIKE :costam2 ";
  16. }
  17. itd...
Go to the top of the page
+Quote Post
barthez
post
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 10.04.2006

Ostrzeżenie: (0%)
-----


Z PDO to by to zadziało( :costam), ale z mysqli nie wiem jak ugryść temat.
W PDO jest bindValue....

Ten post edytował barthez 3.09.2012, 00:39:06
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 03:54