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)
.
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
}
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
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.
De nouvelles questions
php
PHP est un langage de script largement utilisé, de haut niveau, dynamique, orienté objet et interprété, principalement conçu pour le développement Web côté serveur. Utilisé pour les questions sur le langage PHP.