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 :

Problème setFetchMode() en PDO


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 9
    Par défaut Problème setFetchMode() en PDO
    Bonjour,

    Le code suivant me retourne l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to a member function setFetchMode() on a non-object in /home/pdo.php on line 11
    Voici le 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
    $connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
     
    $reponse = $connexion->query("SELECT id, nom, prenom FROM eleves WHERE numero = $classe ORDER BY nom, prenom");
    $reponse -> setFetchMode(PDO::FETCH_OBJ); // ligne problématique
     
    $i = 0;
     
    while($donnees = $reponse->fetch() ) {
     
    	echo $donnees['nom'] . $donnees['prenom'] . $donnees['classe'];
            echo "<input type=\"text\" name=\"note" . $i . "\" /><br />";
            $i++;
     
    }
     
    $reponse->closeCursor();
     
    }
     
    catch(Exception $e) {
    	echo 'Erreur : ' . $e->getMessage() . '<br/>';
    	echo 'N : ' . $e->getCode();
    	die();
    }  
    ?>
    Pourriez-vous m'aider ?

    Merci d'avance,

    Alexandre

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Le code est incomplet mais l'erreur est due au fait que votre requête a échoué. Elle renvoie alors FALSE au lieu d'un objet PDOStatement donc forcément chercher à appeler une méthode de PDOStatement avec FALSE pour référence ça ne va pas marcher ... D'où, l'importance de toujours mettre en oeuvre une gestion d'erreurs (PDO offre pourtant plusieurs options à ce niveau).

    Le strict minimum, à l'image de or die(mysql_error()), serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = $connexion->query("SELECT id, nom, prenom FROM eleves WHERE numero = $classe ORDER BY nom, prenom") or die(print_r($connexion->errorInfo(), TRUE));

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 9
    Par défaut
    Bonsoir,

    Merci pour votre réponse, mais je n'ai en effet copié le code que partiellement.

    Il y a un try ... catch qui, il me semble, gère les erreurs.

    Sinon, le fait que la requête ait échoué est-il dû à un mauvais renseignement de paramètres de connexion à la SQL ?

    Merci d'avance,

    Alexandre

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par alex7812 Voir le message
    Il y a un try ... catch qui, il me semble, gère les erreurs.
    semble ? Les try/catch ne font pas tout : si l'attribut PDO::ATTR_ERRMODE n'est pas redéfini à valeur PDO::ERRMODE_EXCEPTION, ils ne servent strictement à rien puisque PDO, par défaut, ne lève pas d'exception (hormis le constructeur bien sûr).

    Citation Envoyé par alex7812 Voir le message
    Sinon, le fait que la requête ait échoué est-il dû à un mauvais renseignement de paramètres de connexion à la SQL ?
    On peut vraisemblablement penser que l'erreur aurait alors lieu avant. D'autant que le constructeur lèverait une exception : en présence d'un bloc try/catch, vous passeriez par votre bloc catch ; sans, PHP fera de l'exception une erreur fatale sinon ça passe par la fonction de rappel (set_exception_handler) si définie auparavant.

Discussions similaires

  1. [PDO] [PHP 5.4] Problème foreach avec PDO
    Par ggassend dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/05/2014, 16h30
  2. [MySQL] Problème liste déroulante PDO / PHP
    Par Florian_mbf dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/05/2013, 00h04
  3. [PDO] Problème de connexion PDO avec OVH
    Par Dadoo1369 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 21/01/2013, 12h09
  4. [MySQL] Problème "simple" en PDO (affichage d'une requete)..
    Par jlee_xxx dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 23/02/2012, 17h20
  5. [MySQL] Problème de connexion PDO
    Par Nanais19 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/05/2011, 19h10

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