ubuntu 配置PHP通過PDO unixODBC 連接 MSSQL Server 2005
ubuntu 配置PHP通過PDO unixODBC 連接 MSSQL Server 2005
1 安裝unixODBC和freeTDS
apt-get install unixodbc
apt-get install unixodbc-dev
apt-get install odbcinst1debian1
apt-get install tdsodbc
apt-get install freetds-dev
apt-get install freetds-bin
(本人在測試的過程中,只需要安裝 unixodbc和freetds-bin)
2 freeTDS配置
vi /etc/freetds/freetds.conf
[global]增加
client charset = UTF-8
下面增加
[mssql20051]
host=192.168.0.1
port=1433
tds version=8.0
[mssql20052]
host=192.168.0.2
port=1433
tds version=8.0
tsql測試連接兩個mssql服務器
tsql -S mssql20051 -U sa -P 123 -D test
tsql -S mssql20052 -U sa -P 123 -D test
執行sql沒問題
sql返回的編碼與系統locale有關。
3 unixodbc配置文件
vi /etc/odbcinst.ini
[TDS]
Description=MS-SQLServer
Driver=/usr/lib/odbc/libtdsodbc.so
Setup=/usr/lib/odbc/libtdsS.so
UsageCount=1
vi /etc/odbc.ini
[ODBC Data Sources]
mssql1 = MS SQL ODBC 2.50 Driver DSN
mssql2 = MS SQL ODBC 2.50 Driver DSN
[mssql1]
Driver = /usr/lib/odbc/libtdsodbc.so
Description = MySQL ODBC 2.50 Driver DSN
Servername = mssql20051
Database = test
Trace = No
[mssql2]
Driver = /usr/lib/odbc/libtdsodbc.so
Description = MySQL ODBC 2.50 Driver DSN
Server = 192.168.0.2
Port = 1433
User = sa
Password = 123
Database = test
Option = 3
Socket =
Trace = No
TDS_VERSION = 8.0
注意mssql1和mssql2里面一個是Servername一個是server的ip
如果使用Servername,則填寫freetds.conf里面的配置
測試連接
isql -v mssql1 sa 123
執行sql返回結果的編碼與locale有關
isql -v mssql2 sa 123
執行sql返回結果的編碼是GBK
4 編譯php
./configure --with-unixODBC=/usr --with-pdo-odbc=unixODBC,/usr --with-apxs2=/usr/local/apache2/bin/apxs
make
make install
5 php測試代碼
<?php//TDS Driver , only support GBK
$dsn = "odbc:Driver=TDS; Server=192.168.0.1; Uid=sa; Pwd=123; Database=test;";
$c = new PDO($dsn);
//MiscroSoft sqlsrv for php windows ,support utf8, add mssql.charset=utf8 in php.ini
//$c = new PDO( "sqlsrv:Server=192.168.0.1 ; Database = test", "sa", "123", array(PDO::SQLSRV_ATTR_DIRECT_QUERY => true));
//Linux, TDS Data Source, support utf8
//$c = new PDO('odbc:mssql1','sa','123');
$query = 'SELECT top 5 * FROM userinfo';
$stmt = $c->query( $query );
while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ) {
print_r( $row );
}
$c = null;
?></pre>
<?php//TDS Driver , only support GBk
$dsn = "odbc:Driver=TDS; Server=10.1.3.252; Uid=sa; Pwd=sqltest; Database=bc_cric_lj;";
$c = new PDO($dsn);
//MiscroSoft sqlsrv for php windows
//$c = new PDO( "sqlsrv:Server=172.18.3.104 ; Database = test", "sa", "123", array(PDO::SQLSRV_ATTR_DIRECT_QUERY => true));
//Linux, TDS Data Source, support utf8
//$c = new PDO('odbc:mssql','sa','sqltest');
$query = 'SELECT top 5 * FROM criclj_internal_home_baseinfo';
$stmt = $c->query( $query );
while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ) {
print_r( $row );
}
$c = null;
?></pre>來自:http://blog.csdn.net/fanyunlei/article/details/21395301