2012-07-04 3 views
0

데이터베이스에 나열된 전자 메일 주소와 전자 메일 주소가 일치하지 않는지 확인하려고합니다.데이터베이스에 전자 메일이 이미 있는지 확인하려고 시도합니다.

내가 이해 한 rowCount을 사용하려고 시도했는데 일치 항목을 찾았는지에 부울 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.'; 
} 
왜 같은 대해 이메일과 일치하지 않습니다

하나는 데이터베이스에있는 오류 메시지를 던지고?

답변

0

데이터베이스에있는 이메일 주소와 이메일 주소가 일치하지 않는지 확인하려고합니다. [...] 그러나 이메일 주소는 여전히 데이터베이스에 입력됩니다.

우선; 귀하의 요구 사항은 당신이 같은 전자 메일 주소를 가진 두 명의 사용자를하지 않아도 할 수 있다면, 나는 당신이 (당신이 MySQL을 사용하고 있다는 추측) 데이터베이스에 그 시행 더 나을 거라고 주장 :

ALTER TABLE oopforum_users ADD UNIQUE (email); 

데이터베이스에 고유 제한 조건을 만든 후에는 전자 메일 주소를 두 번 삽입 할 수 없습니다. 이는 코드에서 이익을 얻는 데에도 사용될 수 있습니다. 단순히 행 삽입을 시도하고 오류 코드 1062로 실패하면 고유 제한 조건을 위반 한 것입니다. 이렇게하면 코드가 더 쉬워지고 데이터베이스에 대한 집중도가 떨어집니다.

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 !!"; 
    } 
?> 
+0

감사합니다. 그러나 pdo 만 사용하려고합니다. – crm

+0

당신은 그 점을 제외하고 thats 할 수있다!! 내 매력의 중심은 SQL과 결과 로직 .. 당신이 원하는대로 쓸 수 있습니다 .. – manurajhada

관련 문제