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

PDO::commit() sukces lub niepowodzenie

Kluczową częścią jest ustawienie PDO w trybie wyjątku, podczas gdy próba złapania tylko w celu wycofania jest niepotrzebna. Tak więc twój kod jest w porządku, nie ma potrzeby go zmieniać, jeśli wszystko, czego chcesz, to cofnięcie zmian w przypadku niepowodzenia, o ile masz gdzieś tę linię:

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); 

W przypadku niepowodzenia skrypt zostanie zakończony, połączenie zamknięte, a mysql z przyjemnością cofnie transakcję za Ciebie.

Jeśli nadal chcesz wycofać ręcznie, powinieneś robić to poprawnie, a nie tak, jak zostało to powiedziane w innych odpowiedziach. Upewnij się, że

  • łapiesz Exception , a nie PDOException , ponieważ nie ma znaczenia, który wyjątek przerwał wykonanie
  • wyrzucasz ponownie wyjątek po wycofaniu, aby zostać powiadomionym o problemie
  • również, że silnik tabel obsługuje transakcje (tj. dla Mysql powinien to być InnoDB, a nie MyISAM).

Ta lista kontrolna pochodzi z mojego artykułu które mogą okazać się przydatne w tym lub wielu innych aspektach.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Optymalizacja wyszukiwania MySQL za pomocą polubień i symboli wieloznacznych

  2. Błąd zapytania SQL MySQL w WordPressie w klasie WPDB

  3. Policz, ile wierszy ma tę samą wartość

  4. Jak importować i eksportować pliki CSV za pomocą PHP i MySQL

  5. Jak wstawić dane do mysql za pomocą Javy