Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Problem z MySQL PDO
Forum PHP.pl > Forum > PHP
kalit
Hej. Mam problem z PDO z MySQL. Mianowicie mam tu taki kod
  1. public function insertUpdateQuery($query, array $parameters = array())
  2. {
  3.  
  4. try
  5. {
  6. $this->sqlPDO->beginTransaction();
  7. $stm = $this->sqlPDO->prepare($query);
  8.  
  9. if(count($parameters) > 0)
  10. {
  11. $this->prepareParameters($stm, $parameters);
  12. }
  13. $stm->execute();
  14.  
  15. $this->sqlPDO->commit();
  16. }
  17. catch(PDOException $ex)
  18. {
  19. $this->sqlPDO->rollBack();
  20. throw $ex;
  21. }
  22.  
  23.  
  24. }
  25.  
  26. private function prepareParameters(PDOStatement $stm, $parameters)
  27. {
  28.  
  29. foreach($parameters as $key => $value)
  30. {
  31. $stm->bindParam($key, $v);
  32. }
  33.  
  34. }

Problem tkwi w tym, że binduje mi tylko pierwszy parametr a pozostałe są takie jak pierwsze. Tu zapytanie
  1. $sql->insertUpdateQuery("INSERT INTO order_album (name, surname, city, street, postcode, additional) VALUES ( :name, :surname, :city, :street, :postcode, :additional )", array(
  2. 'name' => $name,
  3. 'surname' => $surname,
  4. 'city' => $city,
  5. 'street' => $street,
  6. 'postcode' => $postcode,
  7. 'additional' => $additional,
  8. ));

Prosiłbym o pomoc w rozwiązaniu tego problemu smile.gif
Pyton_000
Po 1 to bindowany parametr musi zawierać : a u Ciebie w tablicy brakuje tego.
Poza tym bindowanie zabezpiecza samo w sobie już więc nie musisz robić tego:
Kod
$v = trim(htmlspecialchars(addslashes($value)));

kalit
Dobra. Mam teraz tak $stm->bindParam(":".$key, $value); ale nadal to samo :<
KsaR
Cytat(kalit @ 13.09.2015, 15:38:33 ) *
Dobra. Mam teraz tak $stm->bindParam(":".$key, $value); ale nadal to samo :<

No zgaduje ze zmieniles to co podal Pyton_000 nizej, a tego co wyzej już nie...

  1. # sprobuj zamiast:
  2. $sql->insertUpdateQuery("INSERT INTO order_album (name, surname, city, street, postcode, additional) VALUES ( :name, :surname, :city, :street, :postcode, :additional )", array(
  3. 'name' => $name,
  4. 'surname' => $surname,
  5. 'city' => $city,
  6. 'street' => $street,
  7. 'postcode' => $postcode,
  8. 'additional' => $additional,
  9. ));
  10. # zrobic tak:
  11. $sql->insertUpdateQuery('INSERT INTO `order_album` (`name`, `surname`, `city`, `street`, `postcode`, `additional`) VALUES (?, ?, ?, ?, ?, ?)', array($name, $surname, $city, $street, $postcode, $additional));
  12. // prosciej, szybciej tongue.gif

Ps. W tej tablicy z wartosciami na koncu miales dodatkowy przecinek.. Nie testowales z wlaczeniem bledow? Hm.
Cytat
  1. 'additional' => $additional,
  2. ));

>>>>>
  1. ':additional' => $additional
  2. ));
Pyton_000
@KsaR , w talicy PHP w niczym nie przeszkadza.
KsaR
Cytat(Pyton_000 @ 13.09.2015, 19:54:21 ) *
@KsaR , w talicy PHP w niczym nie przeszkadza.

No niby, ale zawsze ta "świadomość" biggrin.gif - bo być może coś się kiedyś zmieni w tym kierunku w php.

  1. <?php
  2. ini_set('display_errors',1);
  3. $arr=[1,2,]; # 1 ( , )
  4. foreach ($arr as $v)
  5. {
  6. }; #2 ( ; )
  7. var_dump($arr); # array(2) { [0]=> int(1) [1]=> int(2) }
  8. $arr2=[1,2,3,,4,5]; # np. tu już biała strona.

Ps. Myślałem że pokazuje błąd biggrin.gif
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.