检查用户是否存在语句,而电子邮件语句不在pdo中

时间:2016-06-03 08:18:23

标签: php mysql pdo

我遇到过这个非常奇怪的问题。用户检查声明有效,而电子邮件声明由于某种原因不起作用。以下代码$con也在两个if之外定义。我不认为这是问题所在,因为用户名检查确实有效。

if(!empty($username)){
    $username = $_POST['username'];

    $stmt = $con->prepare("SELECT username from users where username= :name");
    $stmt->bindParam(':name', $username);
    $stmt->execute();
    $rowcount = $stmt->rowCount($stmt);
    if($rowcount > 0){
        $errors[] = "name taken";
    }
    /* doesn't work for some reason */
    if(!empty($email)){
        if(filter_var($email, FILTER_VALIDATE_EMAIL)){
            $email = $_POST['email'];
            filter_var($email,FILTER_SANITIZE_EMAIL);
            $stmt = $con->prepare("SELECT email from users where email= :email");
            $stmt->bindParam(':email', $email);
            $stmt->execute();
            $rowcount = $stmt->rowCount($stmt);
            if($rowcount > 0){
                $errors[] = "email is already taken";
            }
        }
    }
}

正如您所看到的,用户名errors[]确实有效,而电子邮件却没有。我甚至试着回应它仍然没有希望:(

1 个答案:

答案 0 :(得分:0)

$email声明中使用之前,您应该指定if。因此,请在$username之后对其进行初始化,例如:

if(!empty($username)){
  $username = $_POST['username'];
  $email = $_POST['email'];
  ...