Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [pdo] pobieranie nazwy kolumny
Forum PHP.pl > Forum > PHP > Object-oriented programming
tomek_swat
witam,
jak przekazać do funkcji bindValue nazwę kolumny, która pobierana jest z $_POST
  1. <?php
  2. $nr = 1;
  3. //$id = $_POST['id'];
  4. $query = $db->prepare("UPDATE produkt set :id = :value WHERE `IdProduktu` = :nr");
  5. $query->bindColumn(':id', $_POST['id'], PDO::PARAM_STR);
  6. $query->bindValue(':value', $_POST['value'], PDO::PARAM_STR);
  7. $query->bindValue(':nr', $nr, PDO::PARAM_INT);
  8.  
  9. $count = $query->execute();
  10. ?>


gdy zrobie tak, czyli wpiszę id na sztywno to wszystko działa, z tym, że muszę mieć możliwość update dowolnej kolumny

  1. <?php
  2. $nr = 1;
  3.  //$id = $_POST['id'];
  4.  $query = $db->prepare("UPDATE produkt set NazwaKolumny = :value WHERE `IdProduktu` = :nr");
  5. //$query->bindColumn(':id', $_POST['id'], PDO::PARAM_STR);
  6.  $query->bindValue(':value', $_POST['value'], PDO::PARAM_STR);
  7.  $query->bindValue(':nr', $nr, PDO::PARAM_INT);
  8.  
  9.  $count = $query->execute();
  10. ?>


proszę o pomoc, pozdrawiam
plurr
z tego co mi wiadomo to sie nie da, mozesz tylko bindowac wartosci.

  1. <?php
  2. $query = $db->prepare("UPDATE produkt set " . $_POST['id'] .  " = :value WHERE `IdProduktu` = :nr");
  3.  
  4. ...
  5. ?>


Ewentualnie zobacz jak wyglada Zend_Db, tam jest fajnie to rozwiazane.
tomek_swat
hmm no właśnie trochę niedopracowane mi się to wydaję pod tym względem
zegarek84
sorki ale źle używasz - zerknij do manuala do przykładów i zobacz czym się różni:
PDOStatement->bindValue

PDOStatement->bindColumn

a tu może zauwazysz jak zestawię obok siebie:
$stmt->bindColumn('calories', $cals);
$sth->bindValue(':calories', $calories, PDO::PARAM_INT);

POZDRO i na zaś szukaj nawet literówek ;]
tomek_swat
jak widać kombinowałem trochę z bindColumn ale nadal nie widzę w tym rozwiązania mojego problemu
  1. <?php
  2. $query = $db->prepare("UPDATE produkt set /*".$id."*/kolumna = :value WHERE `IdProduktu` = :nr");
  3. $query->bindColumn('kolumna', $id);
  4. ?>
nospor
  1. <?php
  2. $query = $db->prepare("UPDATE produkt set $_POST[nazwakolumny] = ? ...blabla");
  3. $query->execute(array($_POST['value']));
  4. ?>
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.