小编use*_*041的帖子

检查重复的电子邮件地址但排除当前用户

我创建了一个用户登录系统,并有一个页面,用户可以在其中更新其详细信息。电子邮件地址和用户名需要是唯一的,因此我在更新表单中添加了验证。但是,提交表单时会出现错误,提示电子邮件地址已被使用。我可以以某种方式从重复检查中排除当前电子邮件(存储在会话中)吗?

这是我的代码,但不是全部,因为它有点长,我还需要对用户名进行相同的验证检查:

    try {
        $stmt = $db->prepare('SELECT email, username, firstname, middlename, lastname FROM members WHERE memberID = :memberID');
        $stmt->execute(array(':memberID' => $_SESSION['memberID']));
        $row = $stmt->fetch();
    } catch(PDOException $e) {
        echo '<p class="bg-danger">'.$e->getMessage().'</p>';
        }

    //process form
    if(isset($_POST['submit'])){

        // email validation
        if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
            $error[] = 'Please enter a valid email address';
        } else {
            $stmt = $db->prepare('SELECT email FROM members WHERE email = :email');
            $stmt->execute(array(':email' => $_POST['email']));
            $emailcheck = $stmt->fetch(PDO::FETCH_ASSOC);

            if(!empty($emailcheck['email'])){
                $error[] = 'Email provided is already in use.';
            }
        }

        // insert …
Run Code Online (Sandbox Code Playgroud)

php sql validation pdo duplicates

2
推荐指数
1
解决办法
377
查看次数

标签 统计

duplicates ×1

pdo ×1

php ×1

sql ×1

validation ×1