Zhou Haihan/Text
ADO는 new COM("ADODB.Connection", NULL, CP_UTF8)//65001과 같은 문을 사용하여 올바른 변환을 달성할 수 있습니다. 그러나 ADO의 PHP 지원에는 문서가 부족합니다. 풍부한 문서가 포함된 오픈 소스 adodb가 있습니다.
UTF-8을 설정하는 방법은 데이터베이스 드라이버마다 다음과 같이 다릅니다.
코드 복사 코드는 다음과 같습니다.
모든 드라이버의 경우
'persist', 'percious', 'debug', 'fetchmode', 'new'
Interbase/Firebird
'dialect','charset','buffers ',' 역할'
M'soft ADO
'charpage'
MySQL
'clientflags'
MySQLi
'port', 'socket', 'clientflags'
Oci8
'nls_date_format','charset'
모든 드라이버용
'persist', 'percious', 'debug', 'fetchmode', 'new'
Interbase/Firebird
'dialect' ,'charset','buffers','role'
M'soft ADO
'charpage'
MySQL
'clientflags'
MySQLi
'port', 'socket', 'clientflags'
Oci8
'nls_date_format','charset'
이 중 Ado는 charPage 속성을 사용하여 새로운 COM 방법과 유사하게 uft-8을 설정할 수 있습니다. 그런데 AdoNewConnection($dbdriver)의 $dbdriver가 'ado' 또는 'ado_mssql'로 설정되면 전달된 데이터베이스가 공급자로 대체되는 것을 발견했습니다. 데이터베이스 이름을 어떻게 설정하나요? 아직 방법을 찾지 못했습니다.
$dbdriver='ado://sa:cvttdev@172.16.22.40/sqloledb?charpage=65001';
형식은 'driver://user:passwd@host/database?options[=value]입니다.
그러나 데이터베이스 이름 설정 문제는 해결되지 않습니다.
오랜 고민 끝에 찾은 해결 방법은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
$dbdriver='ado_mssql'
$server='192.168.22.40'
$user='sa'; 비밀번호='passwd';
$DATABASE='sugarcrm_db';
$database='sqloledb'
//$dbdriver='ado://sa:cvttdev@172.16.22.40/sqloledb?charpage =65001';
$myDSN="PROVIDER=MSDASQL;DRIVER={SQL Server};SERVER={172.16.22.40};DATABASE=sugarcrm_db;UID=sa;PWD=cvttdev;"; adodb5/adodb.inc.php ');
$db = ADONewConnection($dbdriver); # 예: 'mysql' 또는 'postgres'
$db->debug = true; ;charPage =65001;
//$db->Connect($server, $user, $password, $database)
$db->Connect($myDSN)//error :mssql 서버는
//$db->Execute("set names 'utf8'")
echo "before query";$rs = $db->Execute( '계정에서 * 선택') ;
인쇄
print_r($rs->GetRows())
인쇄
? >
< /body>
위 내용은 mysql workbench의 내용을 포함하여, mysql workbench php adodb가 mssql에 연결하여 왜곡된 문제를 해결하는 방법을 소개하고 있습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.