Mysql
 sql >> Base de données >  >> RDS >> Mysql

Transactions PHP, MySQL, PDO - Le code à l'intérieur du bloc try s'arrête-t-il à commit() ?

Si la transaction échoue pour une raison quelconque, le code s'arrête à la ligne même où l'erreur s'est produite end puis l'exécution saute directement au bloc catch. Il suffit donc de la façon dont vous l'avez écrit dans le bloc de code 2.

Notez que vous devez toujours lever à nouveau l'exception après la restauration. Sinon, vous n'aurez jamais une idée de ce qui était un problème. Donc ça devrait être

try{
    $stmt = $db->prepare(... 1 ...);
    $stmt->execute();

    $stmt = $db->prepare(... 2 ...);
    $stmt->execute();

    $stmt = $db->prepare(... 3 ...);
    $stmt->execute();

    $db->commit();

    return true;
}catch(Exception $e){
    $db->rollBack();
    throw $e;
}