Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL][PDO] execute zawsze zwraca 1
Geston
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 9
Dołączył: 29.11.2010
Skąd: T

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
Geston
post
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 9
Dołączył: 29.11.2010
Skąd: T

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Geston 7.04.2014, 14:11:44
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 01:03