77 votes

Comment afficher l'erreur de requête dans PDO PHP

try {
    $db = new PDO("mysql:host=".HOST.";dbname=".DB, USER, PW);
    $st = $db->prepare("SELECT * FROM c6ode");
}
catch (PDOException $e){
    echo $e->getMessage();
}

Comment puis-je vérifier l'erreur mysql pour la requête dans le cas ci-dessus ?

49voto

ladar Points 2475

J'utilise ceci sans aucun paramètre supplémentaire :

 if (!$st->execute()) {
    print_r($st->errorInfo());
}

21voto

Steve Rukuts Points 2708

Je suppose que votre plainte est que l'exception ne se déclenche pas. PDO est très probablement configuré pour ne pas lever d'exceptions. Activez-les avec ceci :

 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

14voto

Lan Points 413

un moyen rapide de voir vos erreurs lors des tests :

 $error= $st->errorInfo();
echo $error[2];

4voto

Timothy Nwanwene Points 893

/* Provoque une erreur -- la table BONES n'existe pas */

 $sth = $dbh->prepare('SELECT skull FROM bones');
$sth->execute();

echo "\nPDOStatement::errorInfo():\n";
$arr = $sth->errorInfo();
print_r($arr);

sortir

 Array
(
    [0] => 42S02
    [1] => -204
    [2] => [IBM][CLI Driver][DB2/LINUX] SQL0204N  "DANIELS.BONES" is an undefined name.  SQLSTATE=42704
)

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