PHP
downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Les objets larges (LOB)> <Requêtes préparées et procédures stockées
Last updated: Fri, 03 Jul 2009

view this page in

Les erreurs et leur gestion

PDO vous offre 3 façon différentes de gérer les erreurs afin de mieux s'adapter à votre application.

  • PDO::ERRMODE_SILENT

    C'est le mode par défaut. PDO définit simplement le code erreur à inspecter grâce aux méthodes PDO::errorCode() et PDO::errorInfo() sur les objets représentant les requêtes, mais aussi ceux représentant les bases de données ; si l'erreur résulte d'un appel à l'objet représentant la requête, vous pouvez appeler la méthode PDOStatement::errorCode() ou la méthode PDOStatement::errorInfo() sur l'objet. Si l'erreur résulte d'un appel sur l'objet représentant une base de données, vous pouvez également appeler ces deux mêmes méthodes sur l'objet.

  • PDO::ERRMODE_WARNING

    En plus de définir le code erreur, PDO émettra un message E_WARNING traditionnel. Cette configuration est utile lors des tests et du déboguage, si vous voulez voir le problème sans interrompre l'application.

  • PDO::ERRMODE_EXCEPTION

    En plus de définir le code erreur, PDO lancera une exception PDOException et y définit les propriétés afin de représenter le code erreur et les informations complémentaires. Cette configuration est également utile lors du déboguage, car elle va "contourner" le point critique de votre code, vous montrer rapidement le problème rencontré (souvenez-vous : les transactions sont automatiquement annulées si l'exception fait que votre script se termine).

    Le mode "exception" est également très utile car ainsi, vous pouvez structurer votre gestionnaire d'erreur plus clairement qu'avec les alertes traditionnelles PHP et, ce, avec moins de code que lorsque vous exécutez votre code en mode silence, et que vous vérifiez systématiquement les valeurs retournées après chaque appel à la base de données.

    Voir le chapitre sur les exceptions pour plus d'informations sur les exceptions en PHP.

PDO utilise les codes erreurs SQL-92 SQLSTATE ; chaque driver PDO est responsable de lier leurs codes natifs aux codes SQLSTATE appropriés. La méthode PDO::errorCode() retourne un code SQLSTATE unique. Si vous avez besoin d'informations spécifiques sur l'erreur, PDO vous propose également la méthode PDO::errorInfo() qui retourne un tableau contenant le code SQLSTATE, le code erreur spécifique du driver et la chaîne décrivant l'erreur provenant du driver.



add a note add a note User Contributed Notes
Les erreurs et leur gestion
john dot navratil at sbcglobal dot net
07-Jun-2008 10:38
SQLSTATE code strings cannot be counted on, yet.  Attempting to insert a row with a duplicate key provides the 23000 code (constraint violation) when using mysql, but HY000 when using Oracle.  The PDO docs say this is the responsibility of the driver to convert.  In the meantime, the app will have to do it.
radical
22-Apr-2008 07:45
For your convenience, here's an example of how to set the error handling:

<?php

  $dbh
= new PDO( /* your connection string */ );
 
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
 
// . . .
?>

 
show source | credits | sitemap | contact | advertising | mirror sites