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 :

Création d'une classe contenant du PDO -> Erreur avec les 'fetch' [PDO]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur SI
    Inscrit en
    Juin 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur SI

    Informations forums :
    Inscription : Juin 2010
    Messages : 7
    Points : 9
    Points
    9
    Par défaut Création d'une classe contenant du PDO -> Erreur avec les 'fetch'
    Salut à tous

    Je me suis mis au PDO pour optimiser (du moins je l'espère) la sécurité de mon futur site.
    Cependant, je bloque sur une erreur, lorsque j'utilise le PDO en POO.

    Voici mon 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
    <?php
    function connection() {
            try {
                $BDD = new PDO('mysql:host=host;dbname=dbname','root','pass');
     
            }
            catch (PDOException $erreur) {
                echo "Base de données non accessible. Merci de réessayer plus tard";
            }
        }
     
    class sqlCore {
     
       function exeReq($sql) {
            try {
                $BDD->query('SET NAMES utf8');
                $BDD->query($sql);
            }
            catch (PDOException $erreur) {
                 echo 'Problème avec la requête. Merci de réessayer plus tard';
            }
        }
     
    }
    ?>
    Et l'erreur est : Call to a member function query() on a non-object in /homez.305/xboxlive/www/test/class/db.php on line 18

    Après plusieurs essais infructueux et avoir "googleler" l'erreur sans succès, j'ai décidé de demander de savoir si quelqu'un serait me dire d'où vient l'erreur.
    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta fonction connection() se ballade en dehors de la classe :

    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
    <?php
    class sqlCore {
     
    function connection() {
            try {
                $this->BDD = new PDO('mysql:host=host;dbname=dbname','root','pass');
     
            }
            catch (PDOException $erreur) {
                echo "Base de données non accessible. Merci de réessayer plus tard";
            }
        }
     
       function exeReq($sql) {
            try {
                 $this->BDD->query('SET NAMES utf8');
                 $this->BDD->query($sql);
            }
            catch (PDOException $erreur) {
                 echo 'Problème avec la requête. Merci de réessayer plus tard';
            }
        }
     
    }
    ?>

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur SI
    Inscrit en
    Juin 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur SI

    Informations forums :
    Inscription : Juin 2010
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Bonjour
    Merci pour votre réponse.
    Oui, c'est lors d'un test, j'ai oublié de la remettre...
    Sinon, j'ai testé votre code mais il y a toujours le même message d'erreur, mais cette fois-ci pour fetch()

    EDIT :
    J'ai résolu le problème
    Voici le code complet

    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
    27
    28
    29
    <?php
    class sqlCore {
            function connection() {
                    try {
                        $this->BDD = new PDO('mysql:host=mysql5-5.perso;dbname=xboxlive_ae','xboxlive_ae','xNJy334J');
                        $this->BDD->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
                    }
                    catch (PDOException $erreur) {
                        echo "Base de données non accessible. Merci de réessayer plus tard";
                    }
            }
     
            function exeReq($sql) {
                    try {
                            $this->req = $this->BDD->query('SET NAMES utf8');
                            $this->req = $this->BDD->query($sql);
                            while ($this->a = $this->req->fetch(PDO::FETCH_ASSOC)) {
                                    echo "<pre>";
                                    print_r($this->a);
                                    echo "</pre>";
                            }
                    }
                    catch (PDOException $erreur) {
                         echo 'Problème avec la requête. Merci de réessayer plus tard';
                    }
            }
    }
    ?>
    Merci pour votre aide

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/05/2007, 19h46
  2. [C++] Création d'une classe dans un fichier
    Par Pfeffer dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/05/2007, 15h49
  3. Création d'une class contenant un TEdit (Débutant)
    Par Dereck07 dans le forum Delphi
    Réponses: 5
    Dernier message: 01/05/2007, 17h02
  4. Réponses: 7
    Dernier message: 01/09/2006, 14h19
  5. Réponses: 10
    Dernier message: 10/01/2006, 14h14

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