Transactions PHP MySQL : un guide détaillé
Pour la plupart des développeurs, trouver des exemples simples de transactions PHP impliquant MySQL peut être difficile. Cet article vise non seulement à fournir une illustration simple, mais également à clarifier une idée fausse courante sur l'automatisation des transactions en PHP.
Un exemple simple de transaction PHP
Considérez l'extrait de code suivant :
mysql_query("SET AUTOCOMMIT=0"); mysql_query("START TRANSACTION"); $a1 = mysql_query("INSERT INTO rarara (l_id) VALUES('1')"); $a2 = mysql_query("INSERT INTO rarara (l_id) VALUES('2')"); if ($a1 and $a2) { mysql_query("COMMIT"); } else { mysql_query("ROLLBACK"); }
Bien que ce code démontre avec précision les transactions MySQL, l'application réelle des transactions suit généralement un chemin différent pattern :
try { // Start a transaction $db->beginTransaction(); // Execute queries $db->query('first query'); $db->query('second query'); $db->query('third query'); // If all queries succeed, commit the transaction $db->commit(); } catch (\Throwable $e) { // If any query fails, rollback the transaction and throw an exception $db->rollback(); throw $e; }
Notez que dans cet exemple, la transaction est enfermée dans un bloc try-catch. Cela nous permet de gérer toutes les exceptions pouvant survenir lors de l'exécution des requêtes. Il est essentiel de se rappeler qu'une exception doit être levée chaque fois qu'une requête échoue pour garantir la bonne restauration de la transaction.
Les transactions peuvent-elles être automatisées en PHP ?
Malheureusement, il n'existe pas de moyen automatique d'implémenter des transactions en PHP. Malgré la croyance populaire, il n’existe pas de tour de magie permettant d’automatiser le processus. Chaque transaction doit être explicitement définie et gérée dans le code.
En termes simples, les transactions obligent les développeurs à spécifier exactement quel groupe de requêtes doit être considéré comme une transaction. Cela évite les opérations de restauration ou de validation inutiles sur les requêtes qui ne font pas partie de la transaction.
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!