Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PDOstatement::execute() zwraca prawdę, ale dane nie są aktualizowane

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie FULLTEXT z wynikami/rankingami w Postgresql

  2. Zaproponuj hosta internetowego dla Javy w środowisku Windows

  3. Jak wypełnić wartości kluczy obcych w konfiguracji Hibernate + Spring JPA, gdy obiekty nadrzędne/podrzędne są utrwalane w tym samym czasie?

  4. Czy system uwierzytelniania Laravel może korzystać z istniejącej bazy danych?

  5. Indeksy InnoDB przed i po zaimportowaniu