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 :

Undefined Method query()


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Points : 43
    Points
    43
    Par défaut Undefined Method query()
    Bonjour,

    Je rencontre un souci lié à la réalisation de requêtes via PDO, et le message d'erreur suivant :
    Fatal error: Call to undefined method Connexion::query() in
    J'ai d'abord réalisé une classe pour effectuer la connexion :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
    class Connexion
    	{
    		/* ********** */
    		/* Propriétés */
    		/* ********** */
    		/*
    		private : seules les méthodes de la classe dans laquelle est définit l'attribut peuvent y accéder et le modifier
    		protected : seules les méthodes de la classe et des éventuelles classes héritées peuvent accéder à l'attribut et le modifier
    		public : tout le monde peut accéder à l'attribut en question.
    		*/
    		protected $dsn;
    		protected $user;
    		protected $password;
     
    		/* ************ */
    		/* Constructeur */
    		/* ************ */
    		/* Connexion à une base ODBC avec l'invocation de pilote */
     
    		public function __construct()
    		{
    			$this->dsn = 'mysql:dbname=myDbData;host=localhost'; 
    			$this->user = 'root';
    			$this->password = '';
     
    			try {
    				$connexion = new PDO($this->dsn, $this->user, $this->password);
    			} 
    			catch (PDOException $e) 
    			{
    				echo 'Connexion échouée : ' . $e->getMessage();
    			}
     
    			return $connexion;
    		}
    	}
    ?>
    J'ai ensuite dans ma page :

    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
    <?php	
     
    	/* *************************** */
    	/* Auto-chargement des classes */
    	/* *************************** */
    	function LoadCl($cl)
    	{
    		// Inclusion de la classe passée en paramètre
    		require ('../library/'.$cl.'.cl.php');
    	}
    	//Enregistrement de la fonction en autoload pour qu'elle soit appelée à l'instanciation d'une classe (non déclarée)
    	spl_autoload_register('LoadCl');
     
    	/* ******** */
    	/* Includes */
    	/* ******** */
    	include '/monFichier.php';
     
            /* ********* */
    	/* Connexion */
    	/* ********* */
    	$connexion = new Connexion();
     
    ?>
    Je tente enfin d'utiliser cette classe Connexion depuis un fichier php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    public function getlast($lang, $number)
    		{
    			global $connexion; //Connexion à la DB, global->propriété existante	
     
    			$request = $connexion->query('SELECT * FROM myDBTable ORDER BY id DESC LIMIT 0,'.$number);
    			return $request;
    		}
    ?>
    Par avance merci pour vos suggestions.
    Philosophiste.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Ton organisation est un non sens, en effet pDO est déjas Orienté objet et tu réalises un objet d'objet, en plus avec des erreurs

    revois ta copie, merci et A++
    Christele

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 314
    Points : 217
    Points
    217
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Je tente enfin d'utiliser cette classe Connexion depuis un fichier php :
    dans ce fichier , la class Connexion est reconnue ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Par définition, un constructeur ne retourne rien. Si tu veux récupérer l'instance de PDO il faut déclarer $connexion comme attribut de ta classe,l'initialiser dans le constructeur comme instance PDO, puis définir une méthode publique qui renvoie l'attribut $connexion.

    Je te suggère de voir le pattern singletton pour créer une instance de connexion sur la BD.

Discussions similaires

  1. [MySQL] Class accès BD : Call to undefined method db::query()
    Par tornade69 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/04/2013, 12h39
  2. [Artichow] Call to undefined method Graph::getDrawer()
    Par belocom dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 17/04/2008, 22h56
  3. Réponses: 0
    Dernier message: 25/02/2008, 17h28
  4. erreur 1180: Call to a possibly undefined method
    Par Tosh dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 09/12/2007, 23h02
  5. undefined method `cattr_accessor' for ActiveRecord::Base:Cl
    Par r0nsync dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 02/08/2007, 14h41

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