2014-02-07 4 views
-1

데이타베이스 연결을 위해 PDO를 사용하여 로그인 및 등록 시스템을 만들고 있습니다./등록은 항상 default error를 제공합니다.

내 코드 :

} else if ($this->databaseConnection()) { 
     $query_check_user_name = $this->db_connection->prepare('SELECT user_name, user_email FROM users WHERE user_name=:user_name OR user_email=:user_email'); 
     $query_check_user_name->bindValue(':user_name', $user_name, PDO::PARAM_STR); 
     $query_check_user_name->bindValue(':user_email', $user_email, PDO::PARAM_STR); 
     $query_check_user_name->execute(); 
     $result = $query_check_user_name->fetchAll(); 
     if (count($result) > 0) { 
      for ($i = 0; $i < count($result); $i++) { 
       $this->errors[] = ($result[$i]['user_name'] == $user_name) ? MESSAGE_USERNAME_EXISTS : MESSAGE_EMAIL_ALREADY_EXISTS; 
      } 

합니까 난 그냥 hduigifugfulgfrfg를 입력하고있어 항상 나에게 그 오류를 제공 심지어

Sorry, that username is already taken. Please choose another one. 

: 나는 사용자 이름을 확인하고 싶어 때 기본 오류를 반환 누구든지 실수를 본 적이 있습니까? 나는 더 이상 아무것도 볼 수 없을 정도로 오래 찾고 있습니다 : P

고마워.

답변

0

다음 진술에 대한 이유는 무엇입니까?

for ($i = 0; $i < count($result); $i++) { 
    //Do Something 
} 

이 당신의 코드를 교체하십시오 :

} else if ($this->databaseConnection()) { 
    $query_check_user_name = $this->db_connection->prepare('SELECT user_name, user_email FROM users WHERE user_name=:user_name OR user_email=:user_email'); 
    $query_check_user_name->bindValue(':user_name', $user_name, PDO::PARAM_STR); 
    $query_check_user_name->bindValue(':user_email', $user_email, PDO::PARAM_STR); 
    $query_check_user_name->execute(); 
    $result = $query_check_user_name->fetchAll(); 
    if (count($result) > 0) { 
     $this->errors[] = ($result[$i]['user_name'] == $user_name) ? MESSAGE_USERNAME_EXISTS : MESSAGE_EMAIL_ALREADY_EXISTS; 
     } 

코드의 나머지 부분이 완벽하게 잘 보이는, 동일한 사용자 이름 또는 이메일을 얼마나 많은 행 카운트 말하는. 이상인 경우 0은 오류를 출력합니다. 그것은 for 진술을 제외하고는 완벽하게 잘 보인다.

관련 문제