2014-01-23 2 views
0

안녕하세요 여러분, 저는 Oracle 10g 데이터베이스와 php를 연결할 것이지만 데이터를 선택할 때 데이터 언어에 문제가 있습니다.PHP에서 Oracle Data lng

나는이 내 코드 데이터베이스>

에서 아랍어를 가지고 :

$db = oci_connect('UserNAme','Pass','localhost/orcl'); 

if($db){ 
$item = oci_parse($db,"select * from Test"); 
oci_execute($item); 
    $item_m = iconv("UTF-8","Windows-1252",$item); 
    $information=oci_fetch_array($item_m, OCI_ASSOC+OCI_RETURN_NULLS); 
    do {           
     printf("<input type='button' class='btn' value='%s' onclick='add(%s,%s)' /><br />",$information['NAME'],$information['PRICE'],$information['CODE']); 
    } while($information=oci_fetch_array($item_m, OCI_ASSOC+OCI_RETURN_NULLS)); 
} 

그리고이 같은 시도 :

$db = oci_connect('UserNAme','Pass','localhost/orcl'); 

경우 ($ DB를) {

$item = oci_parse($db,"select * from Test"); 
oci_execute($item); 



     $information=oci_fetch_array($item, OCI_ASSOC+OCI_RETURN_NULLS); 
      $info=iconv("UTF-8","Windows-1252",$information); 

       do{          
        printf("<input type='button' class='btn' value='%s' onclick='add(%s,%s)' /><br />",$info['NAME'],$info['PRICE'],$information['CODE']); 
        } 

       while($info=oci_fetch_array($item, OCI_ASSOC+OCI_RETURN_NULLS)); 

}


나는 레지스트리에

그러나 "???????????"처럼 아랍어 언어 표시를 NLS_LANG 변경하려고합니다 또는 "ظ ?? ظظAN ...."

whats the problem ??? 그리고 모두에게 감사드립니다.

답변

0

do/while을 데이터베이스에서 가져 오는 데 사용하지 마십시오. 그것은 당신이 겪고있는 논리 흐름 오류의 정확한 유형을 일으키는 경향이 있습니다. utf -> win1252 변환을 루프 외부에서 한 번 수행 한 다음 루프 내에서 DB 결과의 REST를 절대로 변환하지 마십시오.

대신

while($row = oci_fetch_array(..)) { 
    $info = iconv(....); 
    printf(....); 
} 

보십시오. oci_fetch를 두 번 호출 할 필요가 없으며 일부 데이터가 실제로 데이터베이스에서 수신 된 경우에만 변환을 수행하고 do/while의 "거꾸로"논리에서 머리를 긁지 않으면이 코드를 유지 관리해야합니다.

+0

감사합니다 ... 이제는 아랍어없이 괜찮습니다. !!! 아랍어 디스플레이에이 "????" .. 왜 ?SQL에서 모든 문자를 확인,하지만 PHP 페이지의 문제 – Sticman

+0

전체 시스템에서 동일한 문자 집합을 사용해야합니다. 브라우저 -> 서버 -> 데이터베이스 -> 서버 -> 브라우저. 어떤 스테이지가 DIFFERENT char 세트를 사용하면'?'및 다른 mangled char을 얻습니다. –

+0

아라비아 언어의 데이터베이스에있는 모든 데이터와 나는 인코딩에 대한 메타 대구 (utf-8)를 작성합니다 ... 데이터베이스에 연결 한 후 쓰십시오. 아랍어 표시가 올바른지> 하지만 Oracle 데이터베이스에 연결하고 싶습니다. 아랍어 문제가 있습니다. 포럼 및 웹 사이트에서 해결책을 찾지 못했습니다. – Sticman