Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]PDO bindowanie z tablicy
Forum PHP.pl > Forum > Przedszkole
ShaggyAG
Witam,

troszkę się zakopałem przy updatowaniu bazy danych danymi z formularza.
Na stronie mam formularz do updatowania informacji o profilu (Imie, Nazwisko itp.)
Żadne z pól formularz nie jest wymagane.
w pliku php z przesłanych danych tworze tablice:

  1. $UPD = array();
  2.  
  3. if(!empty($_POST['name']))
  4. {
  5. $UPD['name'] = $_POST['name'];
  6. }
  7. if(!empty($_POST['last_name']))
  8. {
  9. $UPD['last_name'] = $_POST['last_name'];
  10. } .......itp


następnie jeżeli tablica nie jest pusta tworzy się zapytanie

  1. if(count($UPD) > 0)
  2. {
  3. $query = 'UPDATE profiles SET ';
  4. $values = array();
  5.  
  6.  
  7. $numItems = count($UPD);
  8. $i = 0;
  9.  
  10. foreach($UPD as $x => $x_value)
  11. {
  12. $query .= $x . '=:' . $x;
  13.  
  14. if(++$i === $numItems)
  15. {
  16. $query .= ' ';
  17. } else { $query .= ', '; }
  18. }
  19.  
  20. $query .= 'WHERE user_id=:user_id';
  21. }


tak wyglada przykladowe cale zapytanie z $query
  1. UPDATE profiles SET name=:name, city=:city WHERE user_id=:user_id


I teraz nie za bardzo wiem jak do tego podbindować dane z tej tablicy.
dodatkowo do WHERE :user_id chciałem przesłać daną z $_SESSION[user_id]
serdecznie proszę o wskazówki.
KsaR
Ja bym tak zrobił:

  1. //Nad pętlą:
  2. $bind=array();
  3.  
  4. //Przy :
  5. $query .= $x . '=:' . $x;
  6. //Dodał:
  7. $bind[':'.$x]=$x_value;
  8.  
  9. # (...)
  10. $bind[':user_id']=$_SESSION['user_id'];
  11. $q = $pdo->prepare($query);
  12. $q->execute($bind);
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.