나는 현재 내가 쓴이 코드가 있습니다확인
$username = $_POST['username'];
$password = $_POST['password'];
$rpassword = $_POST['rpassword'];
$usrip = $_SERVER['REMOTE_ADDR'];
$email = $_POST['email'];
$errors = array();
$checkUsername = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `username` = :username");
$checkUsername -> execute(array(':username' => $username));
$countUsername = $checkUsername -> fetchColumn(0);
if ($checkUsername != 0)
{
$errors['Username is already taken'];
}
그냥 완전히 사용자 이름이 동일 (수도 등) 경우에도이를 무시하고 것 같습니다 그러나 여전히 허용됩니다 사용자는 동일한 사용자 중 2 명을 등록 할 수 있습니다. 내 데이터베이스는 다음과 같습니다
http://puu.sh/1mTcZ/9b2ff3b68f44b4cc486beacc2d2b88fd
나는이 모든 작업을 진행하는 것 캔트. 데이터베이스 구조는 다음과 같습니다. 정제 (dbname)> 사용자 (테이블)> 사용자 이름 (행)
모든 도움을 주셔서 감사합니다.
편집 :이 내가 무엇을 가지고 몇 가지 변경 후그러나 나는 여전히 같은 문제가있을 것 같다.
$checkUsername = $odb->prepare("SELECT COUNT(*) FROM `users` WHERE LOWER(`username`) = :username");
$checkUsername -> execute(array(':username' => $username));
$countUsername = $checkUsername -> fetchColumn(0);
if ($checkUsername != 0)
{
$errors['Username is already taken'];
}
사용자 이름 행은 현재도 'utf8_general_ci'에 테이블 정렬을 설정하는
IF 문은 ($ checkUsername! = 0)을 평가합니다. 이것 ($ countUsername! = 0)이 아니어야합니까? –