Php 检查我的数据库中是否存在电子邮件
我目前正在尝试创建一个注册表。我有一个小问题,它允许我知道用户输入的邮件是否存在于我的数据库中 添加用户可以正常工作,但当我重新输入相同的邮件时,它会被添加到数据库中,而不必添加,因为邮件已经存在 这是我的密码: JS AJAX:Php 检查我的数据库中是否存在电子邮件,php,mysql,sql,email,pdo,Php,Mysql,Sql,Email,Pdo,我目前正在尝试创建一个注册表。我有一个小问题,它允许我知道用户输入的邮件是否存在于我的数据库中 添加用户可以正常工作,但当我重新输入相同的邮件时,它会被添加到数据库中,而不必添加,因为邮件已经存在 这是我的密码: JS AJAX: $('#btn_submit').click(function() { /* Action on the event */ //1. Récupération des données saisie dans les champs du formulai
$('#btn_submit').click(function() {
/* Action on the event */
//1. Récupération des données saisie dans les champs du formulaire
var firstname = $('#firstname').val();
var lastname = $('#lastname').val();
var phone = $('#phone').val();
var email = $('#email').val();
// var fullValues = firstname + " - " + lastname + " - " + email + " - " + phone + " - " + adress + " - " + country;
// alert(fullValues);
//2. Appel Ajax pour envoyé et traité les données en méthod GUEST vers le fichier manageGuest.php
$.ajax({
data:{
firstname: firstname,
lastname: lastname,
phone: phone,
email: email
},
url: '/core/manageGuest.php',
dataType: 'text',
type: 'GET',
success:function(response){
console.log("Email not Found ! Compte Created");
},
error:function(response){
console.log("Email Found ! Try Again ");
}
})
});
PHP:
你有两个,所以我想第二个是空的 我还没有测试它,但我认为你在那里做了很多测试,这对我来说是错误的 应该是这样的:
$query = $db->prepare("SELECT email
FROM guest
WHERE email=:email");
$query->execute(array('email'=>$email));
if ($query->rowCount() > 0) {
// There is exist record
} else {
// Insert new record
}
在将电子邮件输入数据库之前,您可以使用此函数检查电子邮件是否存在
function emailExist($email) {
$db = new PDO($connectionString, $conf['login'], $conf['password']);
$query = $db->prepare("SELECT email FROM users WHERE email = :email");
$query->bindParam(':email', $email, PDO::PARAM_STR);
$query->execute();
if ($query->rowCount() == 1) {
return true;
} else {
return false;
}
}
if (emailExist($email)) {
/* do something */
} else {
/*register the user */
}
但是不要忘记注意函数中的范围变量。即使是这样也不安全!Is$result=$query->fetchPDO::FETCH_OBJ;真的是空的吗?我认为您的select查询有一些可以忽略的语法错误..首先直接在数据库中测试该查询..然后继续..@JayBlanchard是的,我知道目前我的数据库不安全,因为目前我还没有达到这个级别。这是一个伪造的数据库,所以我可以训练;感谢您的评论,您想说$result=$query->fetchPDO::FETCH_OBJ;没有用?不,这是在那之前的取回。基本上,如果我理解正确,在尝试{}catch{}之前,我有一个emailExist函数?我必须将我的try{}catch{}放在函数中,如果可以先放try{}catch块,然后将函数中的$db变量作为全局$db调用;然后调用函数。
function emailExist($email) {
$db = new PDO($connectionString, $conf['login'], $conf['password']);
$query = $db->prepare("SELECT email FROM users WHERE email = :email");
$query->bindParam(':email', $email, PDO::PARAM_STR);
$query->execute();
if ($query->rowCount() == 1) {
return true;
} else {
return false;
}
}
if (emailExist($email)) {
/* do something */
} else {
/*register the user */
}