0

データベースにリストされているメールアドレスと照合して、一致しないことを確認しようとしています。

rowCountboolを返すか、一致が見つかったかどうかtrueを理解しているものを使用しようとしました。false

ただし、電子メール アドレスは引き続きデータベースに入力されます。

私がメールをチェックするために使用している方法は次のとおりです。

public function checkEmail(){
        if($this->post_data['reg_email'] == $this->post_data['reg_conf_email']){

            if(filter_var($this->post_data['reg_email'], FILTER_VALIDATE_EMAIL)){


                $stmt = $this->dbh->prepare("SELECT email FROM oopforum_users WHERE email = ?");
                $stmt->bindParam(1, $this->post_data['reg_email'], PDO::PARAM_STR);
                $stmt->execute();
                $result = $stmt->rowCount();
                if($this->result){
                    return true;
                }else{
                    return false;
                }
            }else{
                return false;
            }
        }else{
            return false;
        }
    }

それから私の呼び出しプログラムにはこれがあります:

if($register->checkUsername()){

    if(!$register->checkEmail()){

          //continue...

    }else{
        $message = 'ERROR: That email is not valid, doesn\'t match the confirmation email or already exists on our database, please choose another one.';
    }


}else{
    $message = 'ERROR: That username is invalid or is already taken, please choose another one and ensure it is atleast 4 characters long.';
}

メールがデータベース内の同じメールと照合されず、エラー メッセージがスローされるのはなぜですか?

4

2 に答える 2

1
<?php
  $email="SELECT count(*) as emailCount FROM oopforum_users 
          WHERE UPPER(email) ='".strtoupper($catid)."'";
  $rs_count=mysql_query($email) or die(mysql_error());
  $result = mysql_fetch_assoc($rs_count);
  if($result['emailCount'] > 0){
     echo "Email Exists !!";
  } else {
     echo "Email Doesn't Exists !!";
  }
?>
于 2012-07-04T12:07:16.420 に答える
0

データベースにリストされているメールアドレスと照合して、一致しないことを確認しようとしています。[...] しかし、電子メール アドレスはデータベースに入力されます。

初めに; 同じ電子メール アドレスを持つ 2 人のユーザーを決して持つことができないという要件がある場合は、データベースでそれを強制する方がよいと思います (MySQL を使用していると推測します)。

ALTER TABLE oopforum_users ADD UNIQUE ( email );

データベースに一意の制約を作成すると、電子メール アドレスを 2 回挿入することはできなくなります。これは、コードで利益を得るためにも使用できます。単に行を挿入しようとして、エラー コード 1062 で失敗した場合は、一意の制約に違反していることがわかります。これにより、コードが簡単になり、データベースへの負荷が軽減されます。

于 2012-07-04T11:05:21.177 に答える