2014-12-10 5 views
0

등록 양식의 사용자를 데이터베이스에 삽입하는 클래스가 있습니다. 4 가지를 삽입하고 있습니다 : 사용자 이름, 암호, 소금 및 이메일. 내가 중복 항목을 확인하는 errno 1062를 사용하고 있습니다. 하지만 특정 중복 항목을 확인해야합니다. 예를 들어, 나는이 논리가 errno 1062를 검사하지만 실제로는 사용자 이름을 검사하는 것이 아니라 단지 errno를 검사하고 그것이 복사 된 사용자 이름이라고 가정합니다.Errno를 통해 특정 오류 메시지 표시 1062

if ($stmt->affected_rows == 1) { 
     $this->success = "$this->username has registered. You can now log in."; 
    } elseif ($stmt->errno == 1062) { 
     $this->errors[] = "$this->username is already in use. Please chose another."; 
    } else { 
     $this->errors[] = 'Sorry, there was an issue with the database.'; 
    } 

제 질문은 errno 1062를 사용하여 사용자 이름, 이메일 또는 둘 다를 확인하는 방법은 무엇입니까? errno (1062)는 중복 된 항목이 있는지 검사합니다.

+0

여기에서 묻는 내용을 잘 모릅니다. 이메일 중복이 아닌 중복 된 사용자 이름을 사용해 보셨습니까? 반대의 경우도 마찬가지입니까? –

답변

0

errno는 어떤 오류가 발생했는지에 대한 정보가없는 정수 만 반환하지만 자세한 정보는 오류를 사용할 수 있어야합니다.

중복 항목 '% S'키 '% s'을 (를)

당신이 할 수있는 경우 : 당신이 errno는 1062이있는 경우

the manual에 따르면, 오류가이 형식의 문자열이어야한다 이 문자열을 구문 분석하여 일반적인 PHP 문자열 함수를 사용하여 원하는 데이터를 얻습니다. 하나 이상의 오류가있는 경우 발견 한 첫 번째 오류 (내 서버에서)에 대해서만 '불평'하므로 사용자에게 한 가지를 수정하도록 요청한 다음 다른 오류를 해결하기 위해 다시 방문하도록 할 수 있음을 알아 두십시오. . 것을 개선하기 위해 내가 아는 유일한 방법은 별도의 간단한 쿼리를 실행하는 것입니다 :

SELECT COUNT(*) FROM table WHERE email = '[email protected]' 

PS 정말로 중복 된 암호를 차단 하시겠습니까?

+0

나는 dup 암호를 차단하지 않을거야. 나는 dup u/n과 이메일을 차단하고 있습니다. –