Bonjour,

Voila je rencontre un petit problème avec mon code j'ai une erreur fatale lorsque j'essaie de vérifier la l'existance d'un email déjà présent dans ma BDD.

Fatal error: Uncaught Error: Call to a member function prepare() on string in C:\xampp\htdocs\website\users.php:32 Stack trace: #0 {main} thrown in C:\xampp\htdocs\website\users.php on line 32

La ligne 32 est celle-ci ---> $req = $dbb->prepare("SELECT * FROM users WHERE email = :email");

if (empty($errors)) {
$req = $dbb->prepare("SELECT * FROM users WHERE email = :email");
$req->bindValue(':email', $email, PDO::PARAM_STR);
$req->execute();

Merci d'avance,

4 réponses


Carouge10
Réponse acceptée

la je ne vois de $bdd = new PDO.... c'est ce qui m'intéresse

Bonjour,
Cela veut dire que la connexion à PDO ne s'est pas fait.
Peut-on voir cette connexion (en cachant tes identifiant) ?

Schild
Auteur

Ci-dessous le code, les identifiants sont inclus dans une page qui est inclue en début de fichier. Lorsque je teste la connection à la BDD je n'ai pas de message d'erreur.

<?php

require_once('bdd.php');

$titre = 'Insription';

if (!empty($_POST)) {
$post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);

extract($_POST);

$errors = [];

if (empty($name) || strlen($name) < 3) {
    array_push($errors, 'Le nom est requis et doit faire au moins trois caractères.');
}
if (empty($email)) {
    array_push($errors, 'L\'adresse email n\'est pas valide.');
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    array_push($errors, 'Format de l\'adresse email incorrect');
}
if (empty($password) || strlen($password) < 6) {
    array_push($errors, 'Mot de passe requis d\'au moins 6 caractères.');
}
if (empty($register_confirm)) {
    array_push($errors, 'Confirmation du mot de passe requise.');
} elseif (($register_confirm != $password)) {
    array_push($errors, 'Invalidation - Les mots de passe ne correspondent pas');
}

if (empty($errors)) {
    $req = $dbb->prepare("SELECT * FROM users WHERE email = :email");
    $req->bindValue(':email', $email, PDO::PARAM_STR);
    $req->execute();

    if ($req->rowCount() > 0) {
        array_push($errors, 'Un utilisateur est déjà enregistré avec cet email.');
    }

    if (empty($errors)) {
        $req = $dbb->prepare('INSERT INTO users(name, email, password, create_date) VALUES (:name, :email, :password, NOW()');
        $req->binValue(':name', $name, PDO::PARAM_STR);
        $req->binValue(':email', $email, PDO::PARAM_STR);
        $req->binValue(':password', password_hash($password, PASSWORD_ARGON2I), PDO::PARAM_STR);
        $req->execute();
    }
}

}

Schild
Auteur

Merci, erreur dans mon code, à savoir la page qui est inclue en début de fichier, la variable était $ddb à la place de $dbb

Encore merci