首页 > 解决方案 > PHP - 从唯一验证中排除当前电子邮件

问题描述

我在更新 CRUD 中的数据时遇到问题,因为我已经定义了电子邮件验证以检查数据库中的所有电子邮件。

我为验证电子邮件而编写的代码是:

    $sql = "INSERT INTO reg (first_name, last_name, email, phone, address) VALUES (?, ?, ?, ?, ?)";

     $email = mysqli_real_escape_string($conn, $_POST['email']);

     $user_check_query = "SELECT * FROM reg WHERE email='$email' LIMIT 1";
        $results = mysqli_query($conn, $user_check_query);
        $user = mysqli_fetch_assoc($results);

            if ($user['email'] === $email) {

             $emailerr="Email Already Exists";



             }

        else{

    if($stmt = mysqli_prepare($conn, $sql)){

        mysqli_stmt_bind_param($stmt, "sssss", $param_fname,$param_lname, $param_email,$param_phone, $param_address);


        $param_fname = $first_name;
        $param_lname = $last_name;
        $param_email = $email;
        $param_phone = $phone;
        $param_address = $address;

        if(mysqli_stmt_execute($stmt)){
            header("location:index.php");
            exit();
        } else{
            echo "Something went wrong. Please try again later.";
        }
    }


    mysqli_stmt_close($stmt);
}

我只是根据“ID”从数据库中获取数据,但是当我点击更新时,它会检查当前的 Email 。我只是为了检查数据库中的其他电子邮件,不包括当前电子邮件。

标签: phpvalidationcrud

解决方案


你确定这种方法有效吗?如果你只是想检查电子邮件是否存在,你可以使用 count. 如果 count > 0 则 email 已经存在,不需要

if ($user['email'] === $email) {

         $emailerr="Email Already Exists";
}

您已经在 SQL 查询中检查过电子邮件,无需再次检查。希望这可以帮助


推荐阅读