Maison >base de données >tutoriel mysql >Pourquoi les erreurs dans les fonctions externes au sein des transactions Codeigniter ne déclenchent-elles pas une restauration ?
Codeigniter fournit un mécanisme transparent pour gérer les transactions de base de données grâce à ses fonctions intégrées. Cela permet aux développeurs d'exécuter plusieurs opérations de base de données en tant qu'unité de travail atomique unique.
Cependant, lors de l'utilisation de transactions dans Codeigniter, les développeurs peuvent rencontrer un problème courant où des erreurs se produisent dans les fonctions externes. appelés dans le bloc de transaction ne déclenchent pas de restauration.
Pour résoudre ce problème, il est important de comprendre que les fonctions externes contenant des opérations de base de données doivent être encapsulées dans le modèle, et non le contrôleur. Cela garantit que les interactions avec la base de données sont exécutées dans le contexte de la transaction.
Considérez l'exemple de code suivant :
<code class="php">// Model class YourModel extends CI_Model { public function transactionExample($data, $id) { $this->db->trans_start(); $this->db->insert('table_name', $data); // Updating data $this->db->where('id', $id); $this->db->update('table_name', $test); $this->db->trans_complete(); /*Optional*/ if ($this->db->trans_status() === FALSE) { # Something went wrong. $this->db->trans_rollback(); return FALSE; } else { # Everything is Perfect. # Committing data to the database. $this->db->trans_commit(); return TRUE; } } }</code>
Dans Codeigniter 4, les noms des fonctions liées aux transactions ont légèrement changé car suit :
Function | Codeigniter 3 | Codeigniter 4 |
---|---|---|
Start Transaction | trans_start() | transBegin() |
Complete Transaction | trans_complete() | transCommit() |
Rollback Transaction | trans_rollback() | transRollback() |
Transaction Status | trans_status() | transStatus() |
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!