IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Pas de message d'erreur sur requête PDO


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Pas de message d'erreur sur requête PDO
    Bonjour,

    je débute en pdo. j'arrive à avoir un message d'erreur lorsque je me connecte à la base et que les données sont erronées.
    Par contre, impossible d'avoir un message d'erreur lorsque que ma requête est erronée : une idée ? Merci par avance

    Php.ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //PDO Driver for MySQL	enabled
    //Client API version 	5.1.66
    Le code suivant devrait m'envoyer une erreur car la table n'existe pas :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    $dsn = 'mysql:dbname=XXXX;host=localhost';
    $user = 'XXXX';
    $password = 'XXXXX';
     
    try {
        $bdd = new PDO($dsn, $user, $password);
        $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    	$bdd->exec("SET CHARACTER SET utf8");
    	} 
    catch (PDOException $e) {
        echo 'Échec lors de la connexion : ' . $e->getMessage();
    }
     
    $req = $bdd->prepare('INSERT INTO table_bidon(situation, date) VALUES(:situation, :date)');
    $req->execute(array(
    	'situation' => $_POST['situation'],
    	'date' => $date_demande
    		));
     
     
    $req->closeCursor();

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // ------------------------
    $pdo_dsn = 'mysql:host=localhost;dbname=XXXX';
    $pdo_user = 'XXXX';
    $pdo_password = 'XXXXX';
    $pdo_params = array(
    	PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // rapport d'erreurs sous forme d'exceptions
    	PDO::ATTR_PERSISTENT => true, // Connexions persistantes
    	PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" // encodage UTF-8
    	);
    try {
        $bdd = new PDO($pdo_dsn, $pdo_user, $pdo_password, $pdo_params);
    } 
    catch(PDOException $e){
        echo 'ERREUR PDO dans ' . $e->getFile().' L.' . $e->getLine().' : ' . $e->getMessage();
    }
    // ------------------------

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Euh.. ca marche pas
    Merci de ta réponse , mais j'ai essayé mais rien ne se passe.
    J'ai remplacé "exception" par "warning" car je trouve un peu galère de devoir faire toute les requetes avec try et catch.

    Ca marche toujours pas désolé.

    Faut-il configurer qqc sur le serveur pour faire fonctionner warning ?

    Merci

  4. #4
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Citation Envoyé par Romain_cyb64 Voir le message

    Faut-il configurer qqc sur le serveur pour faire fonctionner warning ?

    Merci
    @Romain: par php ou, si tu as la main sur ton serveur, dans php.ini.

    @ jreaux62: pourquoi une connection persistante ?
    My daughter, my laptop, my bike and my double-sticks...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    @Kalimukti : j'ai la main sur php.ini : que dois je verifier ?
    merci à toi

  6. #6
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Il n'empêche que le code de jreaux62 est bon, et que l'écho aurait dû fonctionné...

    pour php.ini, si tu veux un output sur le navigateur (et pas un log des erreurs):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error_reporting = E_ALL
    display_errors = On
    (à ne configurer comme ça que sur ta version de développement....)

    edit et ps: si ton serveur de dev est mamp, vérifie bien que tu modifies bien le bon php.ini (celui de la version de php que tu utilises...). Cette petite nuance là sur mamp m'a rendu fou un soir entier...
    My daughter, my laptop, my bike and my double-sticks...

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par kalimukti Voir le message
    pourquoi une connection persistante ?

    Beaucoup d'applications web utilisent des connexions persistantes aux serveurs de base de données.
    Les connexions persistantes ne sont pas fermées à la fin du script, mais sont mises en cache et réutilisées lorsqu'un autre script demande une connexion en utilisant les mêmes paramètres.
    Le cache des connexions persistantes vous permet d'éviter d'établir une nouvelle connexion à chaque fois qu'un script doit accéder à une base de données, rendant l'application web plus rapide.

  8. #8
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Ok, merci jreaux... je vais me pencher sur le sujet
    My daughter, my laptop, my bike and my double-sticks...

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci les gars , je vais creuser coté config serveur php.ini

    Vous me confirmer que le code de Jreaux62 fonctionne si je remplace "EXCEPTION" par "WARNING" ?

    Merci

  10. #10
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Citation Envoyé par Romain_cyb64 Voir le message
    Vous me confirmer que le code de Jreaux62 fonctionne si je remplace "EXCEPTION" par "WARNING" ?
    Non, je ne pense pas, car du coup, une erreur pdo ne lèvera pas d'exception (PDOException), et le catch n'attrapera rien et ne te donnera aucun message d'erreur...
    (va voir sur le manuel si veux un peu mieux comprendre les exceptions)
    My daughter, my laptop, my bike and my double-sticks...

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Ah ok, donc normal que ca marche pas .

    Vous n'utilisez pas Warning ? parce ce que ca me semble bien plus lourd avec "Exception", non ?

    Sinon vous n'avez pas un exemple de code qui fonctionne avec "Warning" ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Si tu le dis...

  13. #13
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Tout dépend comment tu veux que ton code réagisse:
    vu dans le manuel:
    PDO::ERRMODE_WARNING

    En plus de définir le code d'erreur, PDO émettra un message E_WARNING traditionnel. Cette configuration est utile lors des tests et du déboguage, si vous voulez voir le problème sans interrompre l'application.
    Est-ce que tu as vraiment besoin que ton appli continue à fonctionner si tu as une erreur dans ta requête ou ta connexion avec la BdD ? Si oui, il va de toute façon falloir gérer le cas à un moment ou à un autre dans ton code.
    Franchement, le plus intéressant, pour moi, pour gérer cela, c'est de lever une exception et de la gérer ensuite (par exemple en affichage dans ta version de développement et en log dans ta version de prod... quand ton site est en ligne).
    regarde des tutos sur la gestion des erreurs/exceptions en php et décide ce que tu préfères...
    SI tu reste sur WARNING, avec ça dans ton php.ini:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error_reporting = E_ALL
    display_errors = On
    tu devrais voir tes messages d'erreurs, même les simple warning....

    ps: il y des développeurs qui préfèrent ne pas utiliser les exceptions, je ne sais plus trop pourquoi... moi je trouve ça très pratique.
    My daughter, my laptop, my bike and my double-sticks...

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup, je vais étudier ca en detail.

Discussions similaires

  1. sqlite3, message d'erreur sur une requête qui fonctionne
    Par stefh7 dans le forum Général Python
    Réponses: 13
    Dernier message: 25/02/2011, 13h48
  2. [AC-2003] Message d'erreur sur une requête mise à jour
    Par souketou dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/06/2009, 09h33
  3. Message d'erreur sur requête
    Par jbx50 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/05/2008, 09h48
  4. Message d'erreur sur ouverture d'état/requête
    Par guiguilive dans le forum Access
    Réponses: 1
    Dernier message: 30/05/2007, 11h36
  5. Message d'erreur sur requête suppression
    Par bouba_95 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/05/2007, 11h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo