2011-04-21 7 views
1

ive는 중복 이메일을 확인하는 데 작은 문제가있어, 나는 ive가 잘못했는지 모른다. PHP 측 :PHP 중복 이메일 문자열

// convert to lower case 
$email = $db->real_escape_string(trim(strtolower($_POST['email']))); 

$q = $db->query("SELECT email FROM user WHERE email='$email'"); 
$r = $q->fetch_assoc(); 
if($email == $r['email']) { 
    echo 'yes'; 
} else { 
    echo 'no'; 
} 

필자는 데이터베이스에있는 오래 된 기록을 얻었다. 일부 이메일은 대문자와 소문자로 섞여 있습니다! 대부분은 핫메일 이메일 계정입니다! 더 낮은 포함하고

ie: [email protected] // it skips the duplicate error? 
    [email protected] 
    [email protected] 
+0

사용하는 데이터 정렬에 따라 다릅니다. – zerkms

답변

2

은 실제로 당신이

"SELECT LOWER(email) FROM user WHERE LOWER(email)='$email'"

1

내가 laravel 5를 사용하고 싶지 생각 대문자 이메일을 확인하지만, 개념은 //에서

확인 동일 방법 1 - 500 레코드, 데이터의 양에 따라 1 - 5000 또는 그 이상이 달라지면 일부 DB가 시간 초과 됨, 제한 시간을 늘려야 할 수 있음

$users = Subscribers::all(); // take all users from DB 

for ($x = $check_from; $x <= $check_to; $x++){ 
$check_user = Subscribers::select('id','email')->where('id',$x)->first(); 

     if (!isset($check_user)){ // check for gaps in betw records 
      echo $x . "- not set<br>"; 
     } 
     else{ 
      $check_user_id  = strtolower(trim($check_user->id)); 
      $check_user_email = strtolower(trim($check_user->email)); 
      foreach ($users as $user){ 
       $user_id = strtolower(trim($user->id)); 
       $user_email = strtolower(trim($user->email)); 


       if ($check_user_email == $user_email AND $check_user_id !== $user_id){ 
        echo $check_user_id.' - '.$user_id.' - '. $user_email.' - Duplicated records<br>'; 

//$user->delete(); 
// choose to delete duplicate or whatever u wanna do with it 
        } 
       }     
      } 
     } 

//이 이메일 & & user_id를하지 동일 동일 확인해야하고이 같은 이메일 내 코드 작품 2 ID가됩니다 만 사람이 만드는 향상시킬 수 있다면 짧은 더 좋을 것이다.