sql >> Database >  >> RDS >> Mysql

PDO::commit() succes of mislukking

Het belangrijkste onderdeel is om PDO in uitzonderingsmodus te zetten, terwijl het niet nodig is om alleen try-catch te hebben om een ​​rollback uit te voeren. Uw code is dus in orde, u hoeft deze niet te wijzigen als u alleen terugdraait bij een fout, zolang u deze regel maar ergens heeft:

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

In geval van een mislukking wordt het script beëindigd, de verbinding gesloten en mysql zal de transactie graag voor u terugdraaien.

Als u nog steeds handmatig wilt terugdraaien, moet u het goed doen, niet zoals in de andere antwoorden wordt gezegd. Zorg ervoor dat

  • je vangt Exception , niet PDOException , omdat het niet uitmaakt welke specifieke uitzondering de uitvoering heeft afgebroken
  • je gooit opnieuw een uitzondering na terugdraaien, om op de hoogte te worden gesteld van het probleem
  • ook dat een tabel-engine transacties ondersteunt (d.w.z. voor Mysql zou het InnoDB moeten zijn, niet MyISAM).

Deze checklist is afkomstig uit mijn artikel die u misschien ook nuttig vindt in deze of vele andere aspecten.



  1. BOB SQL-state 00000 maar nog steeds fout?

  2. De Adaptive Join Threshold

  3. Selecteer alle rijen behalve één in MySQL

  4. PHP die een jokerteken bindt