Bonjour à tous ,
j'ai un petit soucis suite au tuto " gestion d'un espace menbre ( refactoring)

je m'inscris : la base de donnée ce remplie , je reçois l'email et la validation est OK .
Mais si je veux modifier le mot de passe j'obtiens cette erreur :

Fatal error: Uncaught Error: Call to a member function prepare() on null in /homepages/34/d781897486/htdocs/account.php:12 Stack trace: #0 {main} thrown in /homepages/34/d781897486/htdocs/account.php on line 12

voici la ligne 12 de la page account.php :

$pdo->prepare('UPDATE users SET password = ? WHERE id = ?')->execute([$password, $user_id]);

Si je ne me trompe pas cette ligne correspond à la page database.php :

<?php
class Database{

    private $pdo;

    public function __construct($login, $password, $database_name, $host = 'db******.hosting-data.io'){
        $this->pdo = new PDO("mysql:dbname=$database_name;host=$host", $login, $password);
        $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $this->pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
    }

    /**
     * @param $query
     * @param bool|array $params
     * @return PDOStatement
     */
    public function query($query, $params = false){
        if($params){
            $req = $this->pdo->prepare($query);
            $req->execute($params);
        }else{
            $req = $this->pdo->query($query);
        }
        return $req;
    }

    public function lastInsertId(){
        return $this->pdo->lastInsertId();
    }

}

j'ai modifié le fichier db.php pour inlure mes identifiants

je ne comprend pas pourquoi je peux inserer des données dans la bdd mais pas les modifiées , si vous avez une idée ??

je code aussi bien en php , qu'un parpaing qui nage dans une piscine ...

UN GRAND MERCI :)

1 réponse


Bonjour,
D'où proviens $pdo ?