Exemples de PHP avec des transactions MySQL
Les transactions en PHP et MySQL fournissent un moyen de garantir qu'une série d'opérations de base de données sont exécutées comme un une seule unité atomique. Cela signifie que soit toutes les opérations de la transaction sont validées dans la base de données, soit aucune ne l'est.
Exemple
Pour utiliser des transactions en PHP, vous pouvez utiliser le code suivant extrait :
$db->beginTransaction(); $a1 = $db->query("INSERT INTO table_name VALUES (value1)"); $a2 = $db->query("INSERT INTO table_name VALUES (value2)"); if ($a1 and $a2) { $db->commit(); } else { $db->rollback(); }
Dans cet exemple, nous démarrons d'abord une transaction en utilisant $db->beginTransaction(). Ensuite, nous exécutons deux requêtes $a1 et $a2 et vérifions si les deux requêtes réussissent. Si les deux requêtes réussissent, nous commit() la transaction, rendant les modifications permanentes dans la base de données. Sinon, nous annulons() la transaction, annulant toutes les modifications apportées au cours de la transaction.
Approche alternative utilisant Try-Catch
Une autre approche pour gérer les transactions consiste à utiliser un bloc try-catch :
try { $db->beginTransaction(); $a1 = $db->query("INSERT INTO table_name VALUES (value1)"); $a2 = $db->query("INSERT INTO table_name VALUES (value2)"); $db->commit(); } catch (\Throwable $e) { $db->rollback(); throw $e; }
Dans cette approche, nous démarrons la transaction dans un bloc try. Si toutes les requêtes réussissent, nous validons la transaction. Si l'une des requêtes échoue, nous annulons la transaction à l'aide de $db->rollback() et renvoyons l'exception pour la gestion.
Transactions automatiques
PHP ne fournit pas de moyen de gérer automatiquement les transactions pour toutes les requêtes. Vous devez spécifier explicitement quelles requêtes doivent être incluses dans une transaction à l'aide des méthodes beginTransaction() et commit() ou rollback().
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!