Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查我的数据库中是否存在电子邮件_Php_Mysql_Sql_Email_Pdo - Fatal编程技术网

Php 检查我的数据库中是否存在电子邮件

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

我目前正在尝试创建一个注册表。我有一个小问题,它允许我知道用户输入的邮件是否存在于我的数据库中

添加用户可以正常工作,但当我重新输入相同的邮件时,它会被添加到数据库中,而不必添加,因为邮件已经存在

这是我的密码:

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:


你有两个,所以我想第二个是空的

我还没有测试它,但我认为你在那里做了很多测试,这对我来说是错误的

应该是这样的:

$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 */
}