Voila alors j'ai un soucis quand je veux faire un select ça marche pas voiçi le code de model :

<?php
class Model{

    static $connections = array(); 
    public $conf = 'default';
    public $table = false; 
    public $db; 
    public $primaryKey = 'id'; 
    public $id; 
    public $errors = array();
    public $form; 
    public $validate = array();
    /**
    * Permet d'initialiser les variable du Model
    **/
    public function __construct(){
        // Nom de la table
        if($this->table === false){
            $this->table = strtolower(get_class($this)).'s'; 
        }

        // Connection à la base ou récupération de la précédente connection
        $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'],
                array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')
            );
            $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
            Model::$connections$this->conf] = $pdo; 
            $this->db = $pdo; 
        }catch(PDOException $e){
            if(Conf::$debug >= 1){
                die($e->getMessage()); 
            }else{
                die('Impossible de se connecter à la base de donnée'); 
            }
        }    
    }

function hashagemdp($password,$pseudo){

    $cnx = Model::$connections;
    $tab = array('pseudo'=>$pseudo);
    $sql= 'SELECT clef1,clef2 FROM users WHERE pseudo = :pseudo';
    $req = $cnx->prepare($sql);
    $req->execute($tab);
    $count = $req->rowCount($req);
        if($count === 1){
            $req->setFetchMode(PDO::FETCH_ASSOC);
            while($data = $req->fetch() ){
                $gs1 = $data'clef1'];
                $gs2 = $data'clef2'];
            }
            $req->closecursor();
            if(!empty($gs1) && !empty($gs2)){
                //encodage du mdp avec les grains de sel récupérer
            }else{
                return false;
            }
        }
    }

Et voici mon erreur :

Fatal error: Call to a member function prepare() on a non-object in C:\Users\enfer14\Desktop\site web\Site_web\Game-Class MVC\core\Model.php on line 56

2 réponses


enfer14
Auteur
Réponse acceptée

ah oui j'avais oublié de dire problème résolu mais merci quand même

Je pense que le problème vient de $cnx qui ne peut pas etre Model::$connections
essaye de mettre $cnx = $this->db;
car la fonction prepare doit être execute avec une instantation de la connexion soit ici $pdo