【发布时间】:2017-07-26 10:49:02
【问题描述】:
我目前正在尝试创建一个注册表单。我的条件有一个小问题,可以让我知道用户输入的邮件是否存在于我的数据库中
添加用户可以正常工作,但是当我重新输入相同的邮件时,它会被添加到数据库中,而不必添加,因为邮件已经存在
这是我的代码:
JS AJAX:
$('#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:
$conf= Conf::$databases['default'];
$connectionString= "mysql:host=". $conf['host'] .";dbname=". $conf['database'];
try {
/* 1. Connection à la base de donnée */
$db = new PDO($connectionString, $conf['login'], $conf['password']);
//set the PDO error mode to exception
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$lastname = $_GET['lastname'];
$firstname = $_GET['firstname'];
$email = $_GET['email'];
$tel = $_GET['phone'];
/* 2. verification si l'email existe dans la BDD*/
$query = $db->prepare("SELECT email
FROM guest
WHERE email=:email");
$query->execute(array('email'=>$email));
$query->fetch(PDO::FETCH_OBJ);
$result = $query->fetch(PDO::FETCH_OBJ);
if(empty($result)){
$query = $db->prepare("INSERT INTO guest (firstname, lastname , tel, email)
VALUES('$firstname','$lastname', '$tel', '$email')");
$query->execute();
echo "Le compte été créé";
} else {
echo "Cette email existe déjà";
}}catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();}
【问题讨论】:
-
$result = $query->fetch(PDO::FETCH_OBJ);真的是空的吗? -
我认为您的选择查询有一些可忽略的语法错误。首先在数据库中直接测试该查询。然后继续。。
-
@JayBlanchard 是的,我知道目前我的数据库不安全,因为目前我还没有达到这个级别。这是一个伪造的数据库,所以我可以训练;)