Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] UPDATE w PDO
Forum PHP.pl > Forum > Przedszkole
Kerth
Witam,
pytałem się już o to na innym forum, niestety nikt nie był w stanie mi pomóc. Chodzi o zapytanie UPDATE, które wykonuję w PDO. Może na początek kod:

  1. $kasa_start = 1000;
  2. $register_kasa_start = $db->prepare("UPDATE `gracze` SET `kasa`= :kasa_start WHERE `nick` = :nick");
  3. $register_kasa_start->bindValue(":kasa_start", $kasa_start, PDO::PARAM_INT);
  4. $register_kasa_start->bindValue(":nick", $nick, PDO::PARAM_STR);
  5. if(!$register_kasa_start->execute()){
  6. throw new Exception("Wystąpił błąd podczas dodawania kasy startowej!");
  7. }
  8. $register_kasa_start->execute();


Zapytanie się nie wykonuje. Do bazy danych w kolumnie `kasa` dla danego gracza nie jest dodawana tzw. kasa w postaci 1000.

Polecenie:
  1. var_dump($register_kasa_start->queryString);

Zwraca mi:

  1. string(60) "UPDATE `gracze` SET `kasa`= :kasa_start WHERE `nick` = :nick"

Z tego wynika, że zapytanie jest dobre. Wie ktoś co z tym zrobić i jak to naprawić?
Turson
2x robisz execute, bo w liniach 5 i 8 to raz.
Dwa, sprawdz bledy wyświetlajac normalne sqlowe warningi a nie ludzkie info
  1. $kasa_start = 1000;
  2. var_dump($nick);
  3. $register_kasa_start = $db->prepare("UPDATE `gracze` SET `kasa`= :kasa_start WHERE `nick` = :nick");
  4. $register_kasa_start->bindValue(":kasa_start", $kasa_start, PDO::PARAM_INT);
  5. $register_kasa_start->bindValue(":nick", $nick, PDO::PARAM_STR);
  6. if(!$register_kasa_start->execute()){
  7. print_r($register_kasa_start->errorInfo());
  8. }

Kerth
  1. string(5) "Kerth"


Błędu nie ma żadnego. Trochę dziwne to "zjawisko", bo wszystkie inne zapytania wykonują się poprawnie tylko te z UPDATE kuleją.
Turson
Polecam upewnić się jeszcze 100x czy masz tam wiersz z takim nickiem smile.gif
Kerth
Jest taki nick na 100 %.
ZaXaZ
Coś mi się Zdaje że chyba ktoś miał kiedyś podobny problem, przyczyna leżała chyba w tym że przed WHERE nie dodawało...
Spróbuj dla testu tak:

  1. UPDATE `gracze` SET `kasa`=1000 WHERE `nick` = :nick


lub właduj zmienną w zapytanie w miejsce 1000. (ale tylko dla testu, czy działa).
Kerth
Też nie działa. Ciągle jest tak samo. Dla mnie to jest nowa sytuacja, bo kompletnie nie wiem jak się za to zabrać i jak szukać podobnych problemów z tym zapytaniem.
viking
Opakuj całość w try/catch, wyświetl sobie treść ewentualnego wyjątku, włącz raportowanie błędów. Albo przejrzyj logi serwera.
irmidjusz
i upewnij się, że łączysz się z odpowiednią bazą... tongue.gif no i czy przypadkiem nie jest to kwestia transakcji
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.