Mysql
 sql >> база данни >  >> RDS >> Mysql

PDO::commit() успех или неуспех

Ключовата част е да зададете PDO в режим на изключение докато да имаш try-catch само за извършване на връщане назад не е необходимо. По този начин кодът ви е наред, няма нужда да го променяте, ако всичко, което искате, е връщане назад при неуспех, стига да имате този ред някъде:

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

В случай на неуспех скриптът ще бъде прекратен, връзката ще бъде затворена и mysql ще се радва да върне транзакцията вместо вас.

В случай, че все пак искате да върнете обратно ръчно, трябва да го правите правилно, а не както е казано в другите отговори. Уверете се, че

  • улавяте Exception , а не PDOException , тъй като няма значение кое конкретно изключение е прекъснало изпълнението
  • вие хвърляте повторно изключение след връщане назад, за да бъдете уведомени за проблема
  • също така, че машина за таблици поддържа транзакции (т.е. за Mysql трябва да е InnoDB, а не MyISAM).

Този контролен списък е взет от моята статия което може да ви бъде полезно и в този или много други аспекти.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблеми с Mysql Query с използване на LIKE и апостроф

  2. Как да направите множество LEFT JOIN с ИЛИ напълно да използвате съставен индекс? (част 2)

  3. PHP PDO Проблем с актуализиране на подготвени изрази

  4. Грешка „Вече имате използваема връзка“ в Visual Studio 2015 при добавяне на източник на данни

  5. Може ли MySQL да използва множество индекси за една заявка?