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

Langage PHP Discussion :

PDO Aucun message d'erreur


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Par défaut PDO Aucun message d'erreur
    Bonjour,

    Je débute en pdo et c'est pour le moment dire, un peux compliqué pour ma part.
    Lorsqu'il doit exister une erreur dans ma requête, rien ne s'affiche (blanc). Je sollicite votre aide svp.

    J'ai a la racine de mon site un fichier config.php dans lequel j'ai ce bout de code :
    Code : 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
    define("MYSQL_HOST",	"******");
    define("MYSQL_BASE",	"******");
    define("MYSQL_USER",	"******");
    define("MYSQL_PASS",	"******");
     
    // Connexion PDO
    try
    	{
    $pdo = new PDO('mysql:host='.MYSQL_HOST.';dbname='.MYSQL_BASE, MYSQL_USER, MYSQL_PASS);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->exec("SET CHARACTER SET utf8");
    	}
    catch(PDOException $e)
    	{
    		echo "Erreur: ".$e->GetMessage();
    	}
    Ensuite, dans mes pages j'ai mes modules d'enregistrement, édition et autre... (j'ai glissé une erreur exprès tx_codes au lieu de tx_code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $FR_PDO = $pdo->prepare("UPDATE ma_table SET date=:tx_date, code=:tx_code WHERE Id = ".$Id." ");
    $FR_PDO->bindParam(":tx_date", 			$tx_date);
    $FR_PDO->bindParam(":tx_code", 			$tx_codes);
    $FR_PDO->execute();
    Aucun message d'erreur... est-ce normal ?

  2. #2
    Membre chevronné
    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
    Par défaut
    Bonjour,

    Aucun message d'erreur... est-ce normal ?
    C'est que ta requête a fonctionné non ?

    sinon: pourquoi ne pas passer l'id aussi dans la préparation de ta requête PDO ?

    (et en passant: si tu n'as aucun message d'erreur alors que tu devrais en avoir, va voir du côté de la configuration de tes rapports d'erreur dans le php.ini de ton serveur.. si tu n'as pas la main dessus, tu peux le configurer à la volé: http://php.net/manual/fr/errorfunc.configuration.php)

    En espérant t'avoir été utile...

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Par défaut
    Bonjour kalimukti et merci de t'intéresser à mon sujet.

    Je n'ai aucun message d'erreur pourtant la requête est mal exécutée...
    Je suis hébergé chez OVH, je n'ai donc pas la main sur php.ini

    J'ai vu la page que tu m'a soumis, mais à vrais dire je ne comprends pas grand chose...

    J'ai vu ce bout de code :
    Code : 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
    22
    23
    24
    25
    26
        <?php
     
        // Désactiver le rapport d'erreurs
        error_reporting(0);
     
        // Rapporte les erreurs d'exécution de script
        error_reporting(E_ERROR | E_WARNING | E_PARSE);
     
        // Rapporter les E_NOTICE peut vous aider à améliorer vos scripts
        // (variables non initialisées, variables mal orthographiées..)
        error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
     
        // Rapporte toutes les erreurs à part les E_NOTICE
        // C'est la configuration par défaut de php.ini
        error_reporting(E_ALL ^ E_NOTICE);
     
        // Reporte toutes les erreurs PHP (Voir l'historique des modifications)
        error_reporting(E_ALL);
     
        // Reporte toutes les erreurs PHP
        error_reporting(-1);
     
        // Même chose que error_reporting(E_ALL);
        ini_set('error_reporting', E_ALL);
     
        ?>
    Mais je ne sais pas si je dois le mettre dans mon fichier config.php ou la page qui exécute la requête... et déjà, est-ce correcte ?

  4. #4
    Membre chevronné
    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
    Par défaut
    tu mets l'error_reporting que tu veux dans ton fichier général (l'index.php par où toutes tes requêtes passent), ou bien dans le fichier qui appelle pdo, tu le mets en première ligne...

    Mais je t'ai répondu un peu rapidement: tu peux dire aussi plus simplement, à PDO de te donner ses exceptions (cf: http://php.net/manual/fr/pdo.error-handling.php)

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
    $user = 'dbuser';
    $password = 'dbpass';
     
    try {
        $dbh = new PDO($dsn, $user, $password);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        echo 'Échec lors de la connexion : ' . $e->getMessage();
    }
    (tu verras sur la page dont je t'ai donné le lien que le mode par défaut de PDO, c'est ERRMODE_SILENT.)

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Par défaut
    Ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
    $user = 'dbuser';
    $password = 'dbpass';
     
    try {
        $dbh = new PDO($dsn, $user, $password);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        echo 'Échec lors de la connexion : ' . $e->getMessage();
    }
    Le mien :
    Code : 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
    define("MYSQL_HOST",	"******");
    define("MYSQL_BASE",	"******");
    define("MYSQL_USER",	"******");
    define("MYSQL_PASS",	"******");
     
    // Connexion PDO
    try
    	{
    $pdo = new PDO('mysql:host='.MYSQL_HOST.';dbname='.MYSQL_BASE, MYSQL_USER, MYSQL_PASS);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->exec("SET CHARACTER SET utf8");
    	}
    catch(PDOException $e)
    	{
    		echo "Erreur: ".$e->GetMessage();
    	}
    Je crois que la seule différence est le getMessage() chez toi et GetMessage() chez moi... tu penses que c'est dû à ça ?

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour, oui la fonction doit-être correctement nommé getMessage()

    Par contre je ne vois pas trop d'erreur dans ton code, tu peux essayer en passant directement les valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $FR_PDO = $pdo->prepare("UPDATE ma_table SET date=?, code=? WHERE Id = ? ");
    $FR_PDO->execute([$tx_date,$tx_codes,$Id]);

Discussions similaires

  1. [XL-2007] Excel VBA ne prend pas en compte mes criteres de filtrage et aucun message d'erreur
    Par coco.on.off dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 12/08/2014, 14h11
  2. Réponses: 1
    Dernier message: 24/07/2009, 17h36
  3. Réponses: 5
    Dernier message: 21/10/2008, 10h13
  4. Réponses: 2
    Dernier message: 08/04/2008, 16h29
  5. Réponses: 3
    Dernier message: 16/04/2007, 17h01

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