Problème :
Les transactions CodeIgniter sont fiables pour des insertions de bases de données sécurisées. Cependant, lors de l'appel de fonctions externes dans les limites de la transaction (trans_start et trans_complete), les opérations de base de données au sein de ces fonctions ne sont pas gérées dans la transaction. Cela peut entraîner des erreurs et des restaurations incomplètes.
Solution proposée :
Pour résoudre ce problème, nous pouvons gérer manuellement les opérations de base de données dans les fonctions externes en ajoutant une vérification de restauration. au sein de chaque fonction. Si une erreur se produit, la restauration sera lancée.
Code :
// Function within Model public function insert_function($data) { $this->db->insert('table_name', $data); if ($this->db->error()) { $this->db->trans_rollback(); return false; // Error occurred } return true; // Success } // Calling Function within Transaction in Model $this->db->trans_start(); $result = $this->insert_function($data); if (!$result) { $this->db->trans_rollback(); } $this->db->trans_complete();
Approche alternative :
Une autre L'approche consiste à implémenter la logique de gestion des transactions en dehors de la fonction dans les limites trans_start et trans_complete. Cela garantit que toutes les opérations de base de données au sein de la fonction externe sont traitées dans la transaction.
Code :
// Function within Model public function insert_function($data) { $this->db->insert('table_name', $data); } // Calling Function within Transaction in Model $this->db->trans_start(); $this->insert_function($data); if ($this->db->error()) { $this->db->trans_rollback(); } $this->db->trans_complete();
Considérations importantes :
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!