Bonjour ou bonsoir à tous,

J'ai un problème au niveau de la 25ème minutes de la vidéo.
Voici l'erreur que j'ai Fatal error: Call to a member function prepare() on a non-object in /home/cercleescrimegarennois/www/core/Model.php on line 33

Voici le code de Model:

<?php
class Model{
    static $connections = array();
    public $conf = 'default';
    public $table = false;
    public $db;
    public function __construct(){
        $conf = Conf::$databases$this->conf];
        if (isset(Model::$connections$this->conf])) {
            $this->db = Model::$connections$this->conf];
            return true;
        }
        try{
            $pdo = new PDO('mysql:host='.$conf'host'].';dbname='.$conf'database'].';',$conf'login'],$conf'password']);
            Model::$connections$this->conf] = $pdo;
        }catch(PDOException $e){
            if(Conf::$debug > 1){
                die($e->getMessage());
            }else{
                die('Impossible de se connecter à la base de donnée');
            }
        }
        if($this->table === false){
            $this->table = strtolower(get_class($this)).'s';
        }
    }
    public function find($req){
        $sql = 'SELECT * FROM '.$this->table.' as '.get_class($this).'';
        $pre = $this->db->prepare($sql);
        $pre->execute();
        return $pre->fetchAll(PDO::FETCH_OBJ);
    }
}

Merci d'avance pour les réponses.

Ps : Les tutos sont top et super pratique.

4 réponses


djtec
Réponse acceptée

Normal car $this->db n'est pas l'instance de pdo il faut que tu fasse $this->pdo = new PDO(); et ensuite tu aura plus qu'à faire $this->pdo->prepare

titilgc
Auteur

Merci sa fonctionne :-)

jai eu le meme prbleme, mais j avais oublier une ligne

<?php
$pdo = new PDO('mysql:host='.$conf'host'].';dbname='.$conf'database'].';',$conf'login'],$conf'password']);
Model::$connections$this->conf] = $pdo;
?>

par

<?php
$pdo = new PDO('mysql:host='.$conf'host'].';dbname='.$conf'database'].';',$conf'login'],$conf'password']);
Model::$connections$this->conf] = $pdo;
$this->db = $pdo;
?>

voila

j'avais le meme probleme j'ai ajouté $this->db = $pdo; comme il a fait henry et ça fonctionne merci beaucoup