Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL][PDO] execute zawsze zwraca 1
Forum PHP.pl > Forum > Przedszkole
Geston
Doszukać błędu się nie mogę i takowych też nie otrzymuje, wykonanie zapytania kończy się powodzeniem, problem polega na tym że zawsze, nawet jeżeli nie powinno.

  1. $result = $dbc -> prepare('UPDATE `users` SET `active` = NULL WHERE `active` = :code');
  2. $result -> bindValue(':code', $code, PDO::PARAM_STR);
  3.  
  4. echo $result -> execute();


W tabeli "users" mam kolumnę "active" przechowującą wcześniej wygenerowany ciąg znaków. Powyższy kod jest częścią funkcji przyjmującej jeden argument "$code". Wywołanie funkcji ma ustalić wartość pola "active" na NULL.

Jeżeli funkcja otrzyma kod który znajduje się w bazie danych to wszystko OK, zmienia jego wartość na NULL i wywołanie metody "execute()" zwraca wartość 1. Problem pojawia się jak przekażę niepoprawny parametr którego w bazie danych nie ma. Liczba edytowanych rekordów powinna wtedy wynieść 0 a mimo to otrzymuję wynik 1, w bazie danych również nie dochodzi do zmian.

Wywołanie zapytania w phpMyAdmin skutkuje komunikatem "na zielono" przekazującym jednak liczbę zmodyfikowanych rekordów równą 0.

Wygląda to tak jakby PDO interpretowało wykonane sukcesem zapytanie jednoznacznie z dodaniem przynajmniej jednego rekordu. Jakieś sugestie? Z góry dzięki.
nospor
Cytat
Liczba edytowanych rekordów powinna wtedy wynieść 0 a mimo to otrzymuję wynik 1


http://pl1.php.net/manual/en/pdostatement.execute.php
Wskaz mi prosze w ktorym miejscu napisali, ze execute zwraca liczbę zmodyfikowanych wierszy

A nastepnie poczytaj to
http://pl1.php.net/manual/en/pdostatement.rowcount.php

manual naprawde po cos wymyslono.
Geston
Niestety nieoficjalne źródła jak widać mogą dzielić się takimi informacjami. Wyszedłem z błędnego założenia że tak właśnie jest to nie skanowałem dalej właściwości tej metody a szukałem problemu gdzieś indziej.

Dzięki za pomoc.
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.