web-dev-qa-db-fra.com

Codeigniter - gestion des erreurs lors de l'utilisation de l'enregistrement actif

Je rassemble quelques modèles pour mon site de codeigniter et ne semble pas trouver de mot dans la documentation sur la façon de gérer les erreurs qui pourraient survenir lors de l'utilisation du système Active Record.

La documentation montre comment effectuer CRUD avec certaines requêtes relativement impliquées, mais où la gestion des erreurs n'est pas discutée. J'ai fait une recherche rapide sur Google et il semblerait que les classes Active Record ne lèvent pas d'exceptions. Est-ce le cas? N'essayez pas d'attraper alors ...

Alors, comment codez-vous pour gérer les erreurs de base de données dans codeigniter? (connexion échouée, clé en double, intégrité référentielle rompue, troncature, mauvais types de données, etc.)

48
Sergio

Que vous utilisiez la classe d'enregistrement active ou non, vous pouvez accéder aux erreurs de base de données à l'aide de $this->db->_error_message() et $this->db->_error_number().

Si vous utilisez une base de données mysql, ces fonctions sont équivalentes à mysql_error() et mysql_errno() respectivement. Vous pouvez consulter ces fonctions en consultant le code source du pilote de base de données pour la base de données que vous utilisez. Ils se trouvent dans le système/la base de données/les pilotes.

Ainsi, après avoir exécuté une requête, vous pouvez vérifier les erreurs en utilisant quelque chose comme:

if ($this->db->_error_message()) \\handle error
58
emmychan

Directement sur le forum de support de CodeIgniter:

$res = $this->db->query($str);

if (!$res) {
  // if query returns null
  $msg = $this->db->_error_message();
  $num = $this->db->_error_number();

  $data['msg'] = "Error(".$num.") ".$msg;
  $this->load->view('customers_edit_view',$data);
} 

Notez que vous pouvez également consigner les erreurs d'enregistrement actif en accédant au fichier de configuration de votre application CI et en définissant les paramètres suivants:

$config['log_threshold'] = 1;
12
Peter Drinnan