Comment serrer message d'erreur de PDO?
Je ne peux pas sembler obtenir un message d'erreur du PDO:
#$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
try {
$sth = $dbh->prepare('@$%T$!!!');
print_r($sth);
print_r($dbh->errorInfo());
} catch (PDOException $e) {
echo $e->getMessage();
}
C'est de donner seulement:
PDOStatement Object
(
[queryString] => @$%T$!!!
)
Array
(
[0] => 00000
[1] =>
[2] =>
)
setAttribute n'aide pas quelque chose.
C'est PHP 5.3.3 Apache 2.0 Gestionnaire
Driver PDO pour MySQL est activé
Version de l'API Client mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $
Que puis-je faire pour obtenir les informations d'erreur?
- Ce n'
print_r($sth->errorInfo())
imprime ? - Je l'ai essayé aussi, il donne un tableau de 3 éléments vides
Vous devez vous connecter pour publier un commentaire.
setAttribute sera cause PDO pour jeter des erreurs ou des exceptions - au plus tard au moment de exécuter la requête.
Pour émulé déclarations préparées à l'avance, il n'y a pas de case dans
prepare()
:Mais il y en aura dans
execute()
lorsque la requête est envoyée au serveur.Toutefois, le pilote mySQL prend en charge les requêtes préparées depuis mySQL 4.1, de toute façon, donc il ne devrait pas s'appliquer. À l'aide de
doit provoquer une exception pour la requête que vous utilisez.
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
?ERRMODE_EXCEPTION
et il n'y a pas d'exceptions ni deprepare()
niexec()
puis autre chose, à tort, dans ce cas, je n'ai aucune idée de ce queerrorInfo()
au travail, aussiMoi aussi, j'essayais d'obtenir l'information de
errorInfo()
à la base de données poignée de niveau, mais j'ai fini par obtenir les informations à partir de la déclaration de niveau avecPDOStatement::errorInfo()
Par site web PHP:
Cela permettra d'imprimer le code d'erreur ainsi que son correspondant message détaillé.
Avis: c'est juste une démonstration. Simplement utiliser pour le débogage but. Ne pas permettre à afficher des messages d'erreur au public dans une version.
:-)
Vous devez d'abord
execute
la requête, puis vérifier les erreurs: Donc faire comme ceci:puis vérifier les erreurs. Ensuite, vous recevrez des erreurs, le cas échéant.