48 votes

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

Je suis en train d'assembler quelques modèles pour mon site Codeigniter et je n'arrive pas à trouver un mot dans la documentation sur la façon de gérer les erreurs qui pourraient se produire lors de l'utilisation du système Active Record.

La documentation montre comment effectuer des opérations CRUD ainsi que des requêtes relativement complexes, mais la gestion des erreurs n'est abordée nulle part. J'ai fait une recherche rapide sur Google et il semblerait que les classes Active Record ne lèvent pas d'exceptions. Est-ce bien le cas ? Pas de try catch alors...

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

58voto

emmychan Points 1389

Que vous utilisiez ou non la classe d'enregistrement active, vous pouvez accéder aux erreurs de la base de données en utilisant les éléments suivants $this->db->_error_message() y $this->db->_error_number() .

Si vous utilisez une base de données mysql, ces fonctions sont équivalentes à mysql_error() y mysql_errno() respectivement. Vous pouvez vérifier ces fonctions en consultant le code source du pilote de la base de données que vous utilisez. Elles sont situées dans system/database/drivers.

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

12voto

Peter Drinnan Points 1123

Tout droit sorti du 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 allant dans le fichier de configuration de votre application CI et en définissant ce qui suit :

$config['log_threshold'] = 1;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X