Rechercher : dans
Par :

PHP PDO Mysql

Dernière réponse le 3 sep 2008 à 15:34:49 peice, le 31 aoû 2008 à 05:38:42 
 Signaler ce message aux modérateurs

Bonjour,
je tente de créer une classe de connexion pour MySQL avec les PDO. Mais j'ai un problème lorsque j'appelle certaines fonctions. Voici ma classe :

class dbConn {

   public $dsn;
   public $dbh;
   public $database;
   public $host;
   public $username;
   public $password;
   
   public function __constructor($host, $username, $password, $database) {	
          $this->host = $host;
          $this->database = $database;
          $this->username = $username;
          $this->password = $password;
      
	  $this->dsn = 'mysql:host='.$host.'dbname='.$database;  
	  self::connect();   
   }
   
   public function connect() {
   
      try {
	     $this->dbh = new PDO($dsn, $this->username, $this->password);
	     $this->dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, TRUE);
	     $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      } catch (PDOException $e) {
	     echo 'Erreur: ' . $e->getMessage();
	  }
   
   }
   
   public function getInstance() {
      return ($this->dbh);
   }
   
}


Ensuite, j'appelle cet objet dans une autre partie du code:

          $connexion = new dbConn('localhost', '***********','**********','******');
	  
	  $dbh = $connexion->getInstance();
	 	  
	  $sql = "SELECT * FROM *** WHERE email = :username AND password = :password LIMIT 1";	  
	  
	  
	  $stmt = $dbh->prepare($sql);
	  
	  $stmt->setFetchMode(PDO::FETCH_OBJ);
	  
	  $stmt->bindParam(':username', $this->username);
	  $stmt->bindParam(':password', $this->password);
	  $stmt->execute();
	  
	  $result = $stmt->fetchAll();
	  
	  foreach ($result as $row) {
	     echo $row->first_name . '  ' . $row->last_name; 
	  }


Et là j'obtiens ce message: Fatal error: Call to a member function prepare() on a non-object in

Je ne comprends pas, pourtant je fais appel au DBH de ma classe de connexion, et c'est comme si il ne reconnaissait pas l'objet.. Quelqu'un peut m'aider?

Merci
Configuration: Windows Vista
Firefox 3.0.1

Meilleures réponses pour « PHP PDO Mysql » dans :
Installation d'un serveur Web sous Linux (Apache, PHP et MySQL) Voir Introduction Un serveur web est un logiciel permettant de rendre accessibles à de nombreux ordinateurs (les clients) des pages web stockées sur le disque. Cette fiche pratique explique comment installer le serveur web Apache sur un système de type...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...

1

fay-control, le 31 aoû 2008 à 09:52:09

!!!!

Répondre à fay-control

2

peice, le 31 aoû 2008 à 13:17:11

Très aidant comme commentaire... Merci.

Répondre à peice

3

 jugurtha Developpeur, le 3 sep 2008 à 15:34:49

Voila, je croix que votre code est correcte mais il y'a quelques erreurs syntaxique:
premiere erreur
public function __construct($host, $username, $password, $database)
2eme erreur
$this->dsn = 'mysql:host='.$host;'dbname='.$database;//ajout d'un poin vergule
3eme erreur
$this->dbh = new PDO($this->dsn, $this->username, $this->password);//il faut ecrire $this->dsn
4eme erreur
pour ma part je prefere de faire
$stmt->execute(array(':username' =>$this->username,':password'=>this->password));
au lieu
$stmt->bindParam(':username', $this->username);
$stmt->bindParam(':password', $this->password);
$stmt->execute();
voila ma reponse est close
de toute facon chez moi ca marche
bonne courage de la part : jugurtha.

Répondre à jugurtha Developpeur