PDO, MySQL et erreurs détaillées : comment faire
Voici mon ancien code d’exécution des requêtes SQL :
$stmt = self::$_pdo->prepare($sql); if ($stmt===false) { } foreach ($tab as $key=>$valeur) { $stmt->bindValue($key, $valeur); } $stmt->execute(); if ($stmt===false) { throw new Exception( "Erreur execution de la requete :\n\"".$sql."\"\n". "Paramètres de la requete :\n\"".var_export($tab, true)."\"\n". "Details de l'erreur : \n".var_export(self::$_pdo->errorInfo(), true) ); }
Le seul (gros) problème, c’est sur erreur d’exécution, il n’y avait aucune explication claire (détail = erreur 0x00). J’ai trouvé la solution : il faut dire de lever une exception si erreur :
self::$_pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
Et maintenant, tout problème d’exécution de query lève une exception qui contient une erreur vraiment détaillée et utile de la requête.
1 comments