sql >> Databáze >  >> RDS >> Mysql

PDO::commit() úspěch nebo neúspěch

Klíčovou částí je nastavení PDO v režimu výjimky zatímco mít try-catch pouze pro provedení rollbacku je zbytečné. Váš kód je tedy v pořádku, není třeba jej měnit, pokud vše, co chcete, je vrácení zpět při selhání, pokud máte někde tento řádek:

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

V případě neúspěchu bude skript ukončen, připojení uzavřeno a mysql za vás rád vrátí transakci.

V případě, že se stále chcete vrátit zpět ručně, měli byste to dělat správně, ne jak je řečeno v ostatních odpovědích. Ujistěte se, že

  • chytáte Exception , nikoli PDOException , protože nezáleží na tom, která konkrétní výjimka exekuci přerušila
  • znovu házíte výjimku po vrácení zpět, abyste byli informováni o problému
  • také že tabulkový stroj podporuje transakce (tj. pro Mysql by to mělo být InnoDB, nikoli MyISAM).

Tento kontrolní seznam je převzat z mého článku který vám může být užitečný v tomto nebo v mnoha dalších aspektech.



  1. Uložená procedura MySQL pro vytvoření uživatele

  2. Jak optimalizovat výkon MySQL pomocí MySQLTuner

  3. Jak VNITŘNÍ PŘIPOJIT 3 stoly pomocí CodeIgniter

  4. Jak získat rok ze sloupce Datetime v MySQL