sql >> Databasteknik >  >> RDS >> Mysql

PDO::commit() framgång eller misslyckande

Nyckeldelen är att ställa in PDO i undantagsläge, medan det är onödigt att ha försök-fånga bara för att göra en rollback. Din kod är alltså okej, du behöver inte ändra den om allt du vill ha är återställning vid misslyckande, så länge du har den här raden någonstans:

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

I händelse av misslyckande kommer skriptet att avslutas, anslutningen stängs och mysql återställer gärna transaktionen åt dig.

Om du fortfarande vill återställa manuellt bör du göra det ordentligt, inte som det sägs i de andra svaren. Se till att

  • du fångar Exception , inte PDOException , eftersom det inte spelar någon roll vilket särskilt undantag som avbröt utförandet
  • du kastar om ett undantag efter återställning, för att meddelas om problemet
  • även att en tabellmotor stöder transaktioner (d.v.s. för Mysql ska det vara InnoDB, inte MyISAM).

Den här checklistan är hämtad från min artikel som du kan ha nytta av i denna eller många andra aspekter också.



  1. Hur man uppdaterar glömt lösenord genom att skicka ett e-postmeddelande i mysql php

  2. Varför matchar inte Oracles varchar-sorteringsordning beteendet för varchar-jämförelse?

  3. Få input från HTML-formuläret och lagra det i mysql genom Flask

  4. MySQL-fel 1064 när främmande nyckel läggs till med MySQL Workbench