Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Konstrukcja zlozonego zapytania w PDO
-tr3v0rr-
post
Post #1





Goście







Witam,

Zeby sobie ulatwic zycie poniewaz na wielu podstronach swojego systemu mam to samo zapytanie do wykonania ale z innymi parametrami musze napisac jeden plik ktory bedzie includowany i ktory bedzie generowal zapytanie na podstawie parametrow. Prawie wszystkie kolumny tabeli za poleceniem where beda okreslane dynamicznie. Nie byloby w tym nic trudnego gdyby nie to ze nie zawsze wszystkie beda wystepowac, a wiec jesli np
  1. $_GET['id_strony'] == 'wszystkie'

nie bedzie polecenia where `id_strony`=:id_strony poniewaz nie mam co tam wstawic. No i tutaj wlasnie zaczyna sie problem. Moge zrezygnowac z bindowania czego bardzo bym nie chcial albo skopiowac ten sam kod 8 razy i go przystosowac do kazdej podstrony co jest rowniez bez sensu bo przy zmianach musze edytowac 8 miejsc. Jakies pomysly ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


  1. $sql = 'SELECT ... FROM ... WHERE %s ORDER BY ...';
  2.  
  3. $whereClause = array();
  4. $parameters = array();
  5.  
  6. if (isset($_GET['id'])) {
  7. $whereClause[] = 'id = :id';
  8. $parameters['id'] = $_GET['id'];
  9. }
  10.  
  11. if (isset($_GET['range'])) {
  12. list($lower, $upper) = explode(',', $_GET['range']);
  13.  
  14. $whereClause[] = 'some_range BETWEEN :lower AND :upper';
  15. $parameters['lower'] = $lower;
  16. $parameters['upper'] = $upper;
  17. }
  18.  
  19. $sql = sprintf($sql, implode(' AND ', $whereClause));
  20.  
  21. $stmt = $pdo->perpare($sql);
  22.  
  23. foreach ($parameters as $key => $value) {
  24. $stmt->bindValue(':' . $key, $value);
  25. }

Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 08:10