Kiedy execute()
zwraca prawdę oznacza to, że stwierdzenie było „udane”, ale nie oznacza to, że coś zmieniło. Oznacza to po prostu, że nie było błędu.
-
Mogło dopasować zero wierszy z powodu warunków w klauzuli WHERE. To wciąż jest uważane za „sukces”. Możesz spróbować
SELECT
z tą samą klauzulą WHERE i pobierz wyniki, aby potwierdzić, że pasuje do wierszy. -
Być może pasował do jednego lub więcej wierszy, ale ustawiane wartości są już wartościami w tych wierszach. Możesz wywołać
$sth->rowCount()
po wykonaniu, aby dowiedzieć się, na ile wierszy UPDATE dotknęło (może to być mniej niż liczba dopasowanych wierszy). -
Jeśli masz więcej niż jedną kopię tej tabeli, powinieneś dokładnie sprawdzić, czy zmiana została dokonana w czytanej bazie danych. Czasami mi się to zdarza — zapominam zmienić plik konfiguracyjny aplikacji i nie zdaję sobie sprawy, że aktualizuję niewłaściwą bazę danych.
To okazało się być problemem – odmiana trzeciego punktu:
- Jeśli pracujesz na więcej niż jednym serwerze, sprawdź również, czy sprawdzasz zmiany na właściwym serwerze mysql.