PHP使用FreeTDS连接MS SQL Server
FreeTDS是一个帮助linux和Unix用户连接MS SQL Server和Sybase的开源项目。常用于linux和Unix平台上的web server将上述两种数据库的数据展示在网站中。从技术层面上讲FreeTDS实现了Tabular Data Stream protocol,也因此得名。Tabular Data Stream protocol用于在数据库服务器和客服端间传输数据,由Sybase公司设计和开发并最先使用于Sybase关系数据库中,后来MS SQL Server也使用了这一协议。
要使PHP支持FreeTDS,有三种API可以选择:db-lib,ct-lib和ODBC。
1、编译安装FreeTDS
./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
make && make install
cd ../
echo "/usr/local/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf
ln -s /usr/local/freetds/lib/libsybdb.so.5.0.0 /usr/local/freetds/lib/libsybdb.so.4
/sbin/ldconfig
添加mssql数据库服务器参数以及charset:
vi /usr/local/freetds/etc/freetds.conf
2、编译安装PHP自带MSSQL扩展
进入本地已存在的php-5.2.XX源码包目录:
cd /data0/software/php-5.2.XX/ext/mssql/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds/
make && make install
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds/
make && make install
3、在php.ini配置文件中增加mssql.so
vi /usr/local/php/etc/php.ini
增加一行:
extension = "mssql.so"
4、重启PHP FastCGI
/usr/local/php/sbin/php-fpm restart
5、测试文件(test_mssql.php):
<?php header("Content-type: text/html; charset=utf-8"); $msdb=mssql_connect("mssql.yourdomain.com:1433","username","password"); if (!$msdb) { echo "connect sqlserver error"; exit; } mssql_select_db("database_name",$msdb); $result = mssql_query("SELECT top 5 * FROM table", $msdb); while($row = mssql_fetch_array($result)) { var_dump($row); } mssql_free_result($result); ?>