PDO et une erreur de requête

Utilisateur anonyme - Modifié le 17 août 2011 à 19:06
 Utilisateur anonyme - 17 août 2011 à 19:06
Hello,

M'initiant actuellement à PDO avec MySQL, je me pose la question suivante : y a t'il une gestion des erreur en PDO comme avec mysql_query ? Lorsque je fais une erreur dans ma requête avec mysql_query, j'ai une erreur php qui me dis que j'ai une erreur dans ma requête. Avec PDO par contre, j'ai une erreur 500 sans explication. Doit-on passer par un try/catch ?

D'avance merci pour votre aide :-)

Belle soirée,

A++

5 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
17 août 2011 à 18:30
Re,

j'ai une erreur 500 sans explication

humm ... c'est à dire ? quelle est l'erreur complète ?

Avec PDO tu peux paramétrer le mode de fonctionnement des erreurs avec setAttribute (cf PDO::ATTR_ERRMODE)

Vois également les méthodes errorCode() et errorInfo()

Cordialement,



Kohntark -
0
Re :)

Autant pour moi, ce n'est plus une erreur 500 que j'ai mais aucun résultat qui s'affiche tout simplement.
Lorsque je fais une erreur dans ma requête MySQL, je n'ai rien qui s'affiche. J'aimerais avoir un message d'erreur à la place :-)

Je regarde ton lien sur setAttribute

A++
0
Ok,

j'ai bien rajouté la ligne ci-dessous juste après ma connexion à ma base de donnée MySQL.

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


Pour pouvoir avoir un message d'erreur lors d'un problème dans une de mes requête MySQL, je suis donc obligé quand même de mettre un bloc try/catch comme ceci : ?

try{
    $resultats = $connexion->query("SELECT * FROM membres ORDER BY id ASC"); 
    $resultats->setFetchMode(PDO::FETCH_ASSOC); 
}
catch (Exception $e)
{
    die('Erreur : ' . $e->getMessage());
}
while( $ligne = $resultats->fetch() ) // on récupère la liste des membres
{
        echo 'Nom : '.$ligne->nom.'
'; 
}
$resultats->closeCursor(); // on ferme le curseur des résultats


A++
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
17 août 2011 à 18:53
Si tu lèves une exception et que tu veux l'attraper oui.
Si tu ne le fais pas elle s'affichera en "exception non attrapée", à condition bien sur que l'affichage des erreurs soit activé.

Tu peux également définir un gestionnaire d'erreurs / exception personnalisé.

Cordialement,

Kohntark -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci pour ta réponse :-)

Qu'est ce qu'une exception non attrapée ? Sont-elles visibles quelque part ?

En ce qui concerne pour erreur 500, j'ai pu la reproduire.
Si je n'utilise pas de try/catch et que j'exécute cette requête :

$resultats = $connexion->query("SELECT * FROM membres WHERE id=".$_GET["id"]." ORDER BY id ASC");


Si dans mon get je demande volontairement : ?id='1. Il m'affiche une erreur 500. Est-ce normal ?

A++
0
Rejoignez-nous