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

Administration MySQL Discussion :

erreur PDO avec fetch() mysql avec netbeans


Sujet :

Administration MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Points : 46
    Points
    46
    Par défaut erreur PDO avec fetch() mysql avec netbeans
    bonjour,

    Je suis en train de suivre un tutoriel pour voir le fonctionnement de PDO et, des le début, j'ai deux petit soucis que je n'arrive pas à comprendre


    Use of undefined constant PDO_ERRMODE_WARNING - assumed 'PDO_ERRMODE_WARNING' in C:\wamp\www\SitePoo\modele\bdo.php on line 10

    Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\SitePoo\modele\bdo.php on line 17
    voila mon code :

    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
    22
    <?php
    $dsn = 'mysql:host=localhost; dbname = testpoo';
    $username = 'root';
    $passwd = '';
     
     
     
    try {
        $BD = new PDO($dsn, $username, $passwd);
        $BD->setAttribute(PDO::ATTR_ERRMODE,PDO_ERRMODE_WARNING);//TODO changer warning en EXCEPTION
    } catch (PDOException $exc) {
        echo 'Problème de connection à la base de donnée veuillez réessayer plutard !';
    }
     
    $sql = "SELECT * FROM user";
    $req = $BD->query($sql);
    while ($d = $req->fetch(PDO::FETCH_OBJ)){
        echo '<pre>';
        print_r($d);
        echo '</pre>';
    }
    ?>

    Au début, j'avais fait une erreur car je m'étais trompé avec le nom de la base de données. Mais après avoir rectifier le tir, j'ai toujours le même problème.
    Ma base de données n'est pas vide et fonctionne, je l'ai testé avant de commencer le tutoriel.

    merci d'avance !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Points : 83
    Points
    83
    Par défaut
    Je t'invite à vérifier que la table "user" existe dans ton schéma de base de données.

    Ce message d'erreur apparaît quand on manipule ce qu'on croit être un recordset. En fait, l'objet $req n'a pas dû être initialisé suite à l'exécution de la requête SELECT * FROM user.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    je viens de verifier il existe bien je vais recréer la table et essayer de nouveau

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    Bon, j'ai créé une autre base de données, nom 'tuto', et une seule table dedans : 'user', avec 4 champs : 'id', 'nom', 'prenom', 'mail'.

    et toujours les mêmes erreurs ..

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Points : 83
    Points
    83
    Par défaut
    Que donne var_dump($req) ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    Ça me retourne false ...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Points : 83
    Points
    83
    Par défaut
    En essayant de changer ta requête SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SHOW TABLES ;
    SELECT id FROM user ;
    Qu'est-ce que cela donne ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    toujours pareil

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Points : 83
    Points
    83
    Par défaut
    Et var_dump($DB) ?

    Je vais finir par croire qu'il ne s'est pas connecté à la base ce petit PDO...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    voila ce que ca me donne :

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Points : 83
    Points
    83
    Par défaut
    En vrac...

    1°) As-tu bien mis les ";" à la fin ?

    2°) Que donne var_dump($DB->errorCode()); ?

    3°) Que donne var_dump($DB->errorInfo()); ?

    4°) Que se passe-t-il si tu enlèves la ligne BD->setAttribute(... ?

    Je n'ai pas l'habitude d'utiliser PDO, mais non d'une exception, on va bien arriver à trouver l'origine du problème !!!

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    ca c'est ma BD et ma table (au cas ou ...)
    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
     
     
    CREATE DATABASE 'tuto';
     
    CREATE TABLE `tuto`.`user` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `nom` VARCHAR( 20 ) NOT NULL ,
    `prenom` VARCHAR( 20 ) NOT NULL ,
    `mail` VARCHAR( 50 ) NOT NULL
    ) ENGINE = InnoDB;
     
    INSERT INTO `tuto`.`user` (
    `id` ,
    `nom` ,
    `prenom` ,
    `mail`
    )
    VALUES (
    '1', 'nom', 'prenom', 'nom@prenom.com'
    );
    1) les ';' y sont bien.
    2) var_dump($DB->errorCode()); me retourne null
    3)($DB->errorInfo()); me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    array
      0 => string '' (length=0)
      1 => null
      2 => null
    4) la ligne BD->setAttribute me retire l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Use of undefined constant PDO_ERRMODE_WARNING - assumed 'PDO_ERRMODE_WARNING' in C:\wamp\www\SitePoo\modele\bdo.php on line 10
    en tous les cas merci de prendre le temp de m'aider parce que ca commence a me fatiguer

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Points : 83
    Points
    83
    Par défaut
    Je crois que deux neurones viennent de se toucher de mon côté !

    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PDO_ERRMODE_WARNING
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PDO::ERRMODE_WARNING

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    je remets le code avec les changements :

    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
    <?php
    try {
        $DB = new PDO('mysql:host=localhost; dbname = tuto', 'root', '');
        $DB->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);//TODO changer warning en EXCEPTION
        echo '1',var_dump($DB->errorInfo());
        echo '2',var_dump($DB->errorCode());
        echo '3',var_dump($DB);
    } catch (PDOException $exc) {
        echo 'Problème de connection à la base de donnée veuillez réessayer plutard !';
    }
     
    $sql = "SELECT nom,prenom FROM user";
    try {
        $req = $DB->query($sql);
        while ($d = $req->fetch(PDO::FETCH_OBJ)) {
            echo '<pre>';
            print_r($d);
            echo '<pre>';
        }
    } catch (PDOException $exc) {
        echo 'requete planter';
    }
    ?>

    C'est fait, ça me remplace l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    USE of undefined constant PDO_ERRMODE_WARNING - assumed 'PDO_ERRMODE_WARNING' IN C:\wamp\www\SitePoo\modele\bdo.php ON line 4
    Par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: PDO::query() [pdo.query]: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected in C:\wamp\www\pdo\pdo.php on line 14
    Bon, je viens de rentrer chez moi. Je vais continuer à chercher de mon côté. Apparemment, j'ai un soucis avec la base de données , je te tiens au jus s'il y a du nouveau entre temps.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    C'est bon. Après un jour et des poussières, tout est rentré dans l'ordre. Voila mon erreur (très très bête) ...

    j'ai mis des espaces là où il ne fallait pas :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $DB = new PDO('mysql:host = localhost; dbname = tuto', 'root', '');

    ... voilà au lieu de

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $DB = new PDO('mysql:host = localhost;dbname=tuto', 'root', '');

    bref

    Je te remercie pour le temps passé à m'aider

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Problème de PDO avec migration mysql -> mssql
    Par bulkathos dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/07/2007, 12h15
  2. Erreur connection à une base Mysql avec c#
    Par zidenne dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 24/04/2006, 14h58
  3. [MySQL] Erreur SQL 1064 : Requête imbriquée avec jointure !
    Par patchankito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 31/01/2006, 10h37
  4. Réponses: 2
    Dernier message: 16/01/2006, 11h38
  5. Api mysql avec Devc++, erreur de compilation
    Par Viiince dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 15/06/2004, 17h19

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