Problème avec Try Catch

Par stephweb, il y a 11 ans


Bonjour,

j'ai besoin d'un petit renseignement SVP.

En fait je n'arrive pas à faire fonctionner Try et Catch, lors d'une requete SQL.

Voici par exemple mon code avec une requete UPDATE:

<?php try { $db = BaseDeDonnee::getPDO(); // requete SQL pour modifier email de l'utilisateur $statement = "UPDATE utilisateurs SET email = :marqueur WHERE id = :idget LIMIT 1"; $requete = $db->prepare($statement); $requete->bindValue(':marqueur', 'email', PDO::PARAM_STR); $requete->bindValue(':idget', $idGet, PDO::PARAM_INT); $requete->execute(); echo 'Les modifications ont bien eu lieu'; $requete->closeCursor(); } catch(PDOException $e) { echo 'Une erreur est survenue lors de la modification'; }

Si je fait une erreur à UPDATE utilisateurs (pour tester j'ai par exemple fait exprès de faire une erreur de frappe à utilisateurs),

le echo qu'il y a dans le catch ne s'affiche pas.

Quelqu'un peu m'aider?

Merci beaucoup

5 réponses

Huggy, il y a 11 ans

Peut-être un problème de namespace
essaye un anti-slash devant PDOException

catch(\PDOException $e) {
stephweb, il y a 11 ans

Merci c'est fait, je viens de tester. Et ça ne change rien.
merci

Huggy, il y a 10 ans

essaye ça juste après l'instanciation de pdo

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
stephweb, il y a 10 ans

Bonjour,
du coup c'est bon sujet résolu.
on m'a conseillé de faire comme ceci dans la class BDD :

self::$_bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Alerte de type E_WARNING lorsque le SGBD renverra une erreur. Cela te permet de savoir à quelle erreur on a à faire. On a donc une piste de réflexion pour la corriger. if (!ini_get('output_buffering')) { ob_start(); } set_exception_handler( function ($e) { ob_end_clean(); header('HTTP/1.0 500 Internal Server Error', TRUE, 500); //die('Erreur serveur'); $_SESSION['info'] = '<span class="bold rouge">Une erreur est survenue</span>'; header('Location: ../../index'); exit(); } );

Merci

redkill2108, il y a 10 ans

merci de marquer le sujet résolu