Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2007, 10h32   #1
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Par défaut Requête préparée, retour d'erreur à masquer

Bonjour,

Je teste une requête préparée avec PDO, et je fais délibérement une faute de syntaxe dans ma requête qui me renvoie donc :

Citation:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column
Sur le server de production je n'affiche pas les erreurs PHP, je les loggue cependant. Mais une erreur PDO de ce type bloque tous les traitements qui suivent et je voudrais pouvoir informer l'internaute d'un problème sur l'application .

Je ne parviens pas à déceler l'erreur avec cette syntaxe :
Code :
1
2
3
 
$this->query_prepare = $this->pdo->prepare($this->query);
if ($this->query_prepare === FALSE) etc....
Sachant que $this->pdo = mon PDO.

Je n'entre dans aucune des deux conditions if ou else car le traitement s'annule totalement avec le fatal error indiqué plus haut.

Que puis-je faire pour renseigner l'internaute sans qu'il voit se message d'erreur que je masquerai depuis le php.ini?

Merci
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2007, 10h36   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
C'est une exception qui est levée, il faut donc la "catcher" si tu veux continuer ton traitement en faisant ca :

Code :
1
2
3
4
5
6
7
8
9
10
 
try
{
$this->query_prepare = $this->pdo->prepare($this->query);
if ($this->query_prepare === FALSE) etc...
}
catch(PDOException $ex)
{
// log exception
}
l'exception a un certain nombre de méthodes par défaut dont "getMessage()" qui permet de récupérer le message d'erreur si tu veux le logger.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2007, 10h39   #3
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Aaah j'y avais pas pensé! Pourtant j'utilise les try and catch partout dans mon objet. Une vieille habitude, je ne suis pas encore habitué!

Merci!
__________________
Développeur indépendant sur technos Web à votre service
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h27.


 
 
 
 
Partenaires

Hébergement Web