2016-09-16 2 views
3

두 개의 흔들림을 비교하려고합니다. 하나는 입력에서, 다른 하나는 datebase에서 비교하려고합니다. 데이터베이스에이 이름 목록이 있는데 그 이름이 이미 데이터베이스에 있는지 확인하려고하지만 문제는 세르비아어 라틴어 (Č, Ć, Đ, Ž, Š)의 특수 문자입니다. 연결에는 UTF-8 charset mysqli_set_charset ($ this-> con, 'utf8')이 있고 DB에는 utf-8_unicode_ci 데이터 정렬이 있습니다.입력 문자열과 함께 databese의 UTF-8 문자열 비교 (PHP/SQL)

$names = Teachers::returnTeachers(); 
    if(isset($_GET['idRequest']) && $_GET['idRequest'] == 1) 
    { 
$firstName = trim($_GET['firstname']); 
$status = ""; 


    foreach($name as $names) 
{ 
    if(strtolower(trim($names['firstname'])) == $firstName) 
    { 
     echo "This name is already in DB"; 
     $status = "exist"; 
    } 
     echo "No name"; 
     $status="not exist"; 
} 

나는 DB에서 "노박 조 코 비치"와 같은 이름을 가지고, 그리고 그 이름이 존재하지 않습니다 말할 것이다 나는 입력에서 "노박 조 코 비치"를 입력합니다. C, Ć 또는 Č는 다른 의미가 있기 때문에 incov()를 사용할 수 없습니다. 이름 Colović와 남자 그것은 이름 Čolović를 가진 남자와 동일하지 않다.

P. DB에서 이름을 에코 할 때 특수 문자는 물음표 기호가 아닌 정상적으로 나타납니다.

편집 : 의견

public static function returnTeachers(){ 
    $all = []; 
    $rs = Conection::query("SELECT firstname FROM teachers"); 
    while($row = $rs->fetch_assoc()) { 
     array_push($all,$row); 
    } 
    return $all; 
} 
+0

classic XY? 'returnTeachers()'에서 반환 할 때'$ names'가 어떻게 보이는지 게시 하시겠습니까? 그것 배열, 배열, 배열, 연관? ... 아마 foreach의 공식에 간단한 논리 오류가 있습니다 (즉, UTF8 문제가 아님) – YvesLeBorg

+0

public static function returnTeachers() { $ all = []; $ rs = Conection :: query ("SELECT firstname FROM teachers"); while ($ row = $ rs-> fetch_assoc()) { array_push ($ all, $ row); } return $ nizSvih; } 특수 문자없이 이름을 입력하면 반환되므로 문제가되지 않습니다. – EmJam

+0

죄송합니다. 우연히 엔터를 누르면 (다시 보입니다) – EmJam

답변

1

utf8_unicode_ci에서 일부 코드를 추가하는 것은 다소 "일반적인"이며, 그런 당신이 세르비아어을 위해 무엇을 같은 특정 요구 사항을 준수하는 데 실패합니다.

'세르비아어'데이터 정렬이 표시되지 않지만 충분히 가까이 올 수있는 데이터가 여러 개 있습니다. utf8_croatian_ci 별도의 "문자"로 CČĆ 취급 http://mysql.rjweb.org/utf8_collations.html

참고 봐. 체코 어, 슬로바키아어 및 폴란드어 (및 다른 사람)는 그 중 일부를합니다. 위도 : ŽŠ

Ð은 utf8_unicode_520_ci을 제외한 모든 데이터 정렬 에 의해 별도의 문자로 처리됩니다.

다른 정렬 중 하나를 선택하십시오. utf8_croatian_ciCČĆ을 뚜렷한 것으로 취급하는 유일한 제품이므로 가장 가까운 것으로 보입니다.

+0

여전히 문제가 있지만 어쨌든 고맙습니다 .AJAX 및 jQuery 코드를 수정 한 다음 다시 시도해 볼 수 있습니다. – EmJam

+0

업데이트 : 작동합니다. 고맙습니다! – EmJam