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 :

Fatal error: Call to a member function query() on a non-object [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Par défaut Fatal error: Call to a member function query() on a non-object
    bonjour, je suis heuré depuis quelques heures sur une erreur, qui n'a pas lieu d'être.

    J'ai réutilisé ce code, et seul les accès a la base de donnée ont changé. Ils fonctionnent très bien, je ne sais pas quoi en penser.


    Voilà 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
     
        class database{
     
     
            private static $bdd;
     
            public static function getBdd(){    
     
                if (!self::$bdd) {                
                    try {
                        self::$bdd = new PDO('mysql:dbname=test;host=localhost', 'root', 'root');    
                        self::$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION,PDO::ERRMODE_WARNING);         
                    } catch (PDOException $e) {                
                        self::$bdd = NULL;
                        return 'ERREUR PDO ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
                    }
                }
                return self::$bdd;
            }
        }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        require_once("database.class.php");
     
     
        function select_champ($_table, $_champ){
            $bdd = database::getBdd();
            $query = 'select '.$_champ.' from '.$_table.';';
            $result = $bdd->query($query);       
            return $result;                                                                                                                                                      
        }
    Je ne sais pas quoi en penser, merci de votre aide.

    Dans la fonction de selection, je fais avec bind, mais même sa, sa fonctionne pas.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 505
    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 505
    Par défaut
    Chez moi ce code fonctionne, bien entendu la query ne retourne rien, mais je n'ai pas d'erreur.

  3. #3
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Par défaut
    Je ne comprend pas, j'exécute le code en console (php monfichier.php)

    et j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to a member function query() on a non-object in /Users/dev/3/functions_request.php on line 8

  4. #4
    Membre éprouvé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Billets dans le blog
    6
    Par défaut
    et le new dans la déclaration d'instance ne manque pas ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Par défaut
    Comment ça ?

    Je créé bien au niveau de la connexion, après je ne dois rien instancier non ?

    Je ne comprend pas, car ça fonctionne très bien sur mon autre script. Cependant, l'exécution via la console ne sort cette erreur.

  6. #6
    Membre éprouvé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Billets dans le blog
    6
    Par défaut
    dsl j'ai mal lus le code
    ton problème vient sans doutes des modules qui ne sont pas les même de la version console contre le module apache
    regarde peut être tes modules activés

  7. #7
    Membre confirmé
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Par défaut
    Actuellement, j'utilise mamp.

    J'ai un site web qui fonctionne de la même façon, et marche parfaitement, de l'autre j'ai ce bout de code, exécuté en console qui m'affiche cette erreur.

    Je viens de la passer au niveau du web, et pareil, j'ai la même erreur. J'ai regardé dans le php.ini, les 3 extensions PDO sont activées, je ne vois absolument pas pourquoi sa fait ça.

    J'ai activé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    extension=pdo.so
    extension=pdo_pgsql.so
    extension=pdo_mysql.so

    EDIT: Résolu, 1 journée à chercher. préfix de la table manquante.

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

Discussions similaires

  1. Fatal error: Call to a member function query() on a non-object
    Par tib44 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/06/2015, 23h33
  2. [MySQL] Fatal error: Call to a member function query() on a non-object
    Par -Fly- dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 12/11/2010, 15h48
  3. Réponses: 4
    Dernier message: 02/10/2009, 10h12
  4. [PDO] Fatal error: Call to a member function setFetchMode() on a non-object in
    Par tores20 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/07/2009, 23h04
  5. [PHP 5.2] Fatal error: Call to a member function bindValue() on a non-object
    Par TeraD dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2009, 00h20

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