J'ai un site Web et lorsqu'un utilisateur s'inscrit, je veux vérifier si le email saisi a déjà été utilisé pour register un autre compte.

database: users
row: email
new email: $email_register
$result = $pdo->prepare("IF email_register = ? IN email FROM users $same = TRUE");
$result->execute(array($email_register));   
$user = $result->fetch();
if($same == TRUE)
{
echo email already used;
}
else
{
#continue registration process
}

Je veux un moyen de savoir si le email est déjà dans la base de données, et si c'est le cas, pour que l'utilisateur soit renvoyé à la page d'inscription avec un message d'erreur (error code transmitted via header).

-2
The_Moth 4 nov. 2019 à 12:43

3 réponses

Essayez de cette façon

// check if email is taken already
$stmt = $pdo->prepare("SELECT email FROM users WHERE email_register = :email");
$stmt->execute([
    'email_register ' => $email
]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

if (isset($user) && !empty($user)){
    // Username already taken
   echo "email already used";
}else{
   //redirect to registration process
}
0
Bhargav Chudasama 4 nov. 2019 à 09:59

Il n'y a pas besoin de IF dans la requête SQL. Il suffit d'écrire une instruction select simple comme:

Select email from users where email = 'example@example.com';

Si la requête retourne et aboutit, cela signifie que l'e-mail est déjà dans la base de données, sinon vous pouvez continuer le processus d'inscription.

if($exist)
{
    return false; or you redirect to registration page whatever you want to do. 
}
#continue registration process
-1
Bhargav Chudasama 4 nov. 2019 à 09:54

En supposant que les utilisateurs ne doivent pas avoir plus d'un compte par e-mail, une approche simple consiste à faire de la colonne des e-mails une clé unique (ou clé primaire) dans la table des utilisateurs. Cela empêche qu'un e-mail soit utilisé plusieurs fois.

0
suspectus 4 nov. 2019 à 09:56