centos6.5 64位下PHP远程连接sql server2008成功案例

准备工作:

1、sql server2008服务器(开放远程端口,默认为1433,我用的是192.168.1.129)

2、安装好php的centos服务器

步骤:

1、php安装mssql扩展。centos下用yum安装比较方便,但是默认情况下yum库里并没有mssql可供安装,此时需要安装fedoraproject的epel-release源,即可以安装php的mssql模块。

注:epel是fedora开发组为centos开发的附加软件yum源,可以弥补centos上游redhat里缺少的软件包,epel的质量还是相当之高的。

[root@sky html]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
[root@sky html]# yum install php-mssql
[root@sky html]# /etc/init.d/httpd graceful

查看phpinfo可以看到mssql扩展信息:

特别注意那个FreeTDS,mssql实际还是FreeTDS,其功能主要是在Liunx下能够访问Sybase及MS SQL,官方网站是:http://www.freetds.org/

2、配置FreeTDS。安装mssql后,freetds作为dependence也安装至系统中,查看freetds的基本信息:

[root@sky html]# tsql -C

发现其配置文件位于/etc文件夹下,修改配置文件:

[root@sky html]#vi /etc/freetds.conf

在文档后面加上实际的sql server2008的连接信息:

[SERVER1]

        host = 192.168.1.129

        port = 1433

        tds version = 7.0

        client charset = UTF-8

保存后确认freetds可以连上sql server2008:

[root@sky html]#tsql -S SERVER1 -U account -P password

出现以下信息表示连接成功:

 

3、使用php连接sql server2008。

代码如下:

<?
$conn=mssql_connect('SERVER1','account','password') or die('Something went wrong while connecting to MSSQL');
mssql_select_db('skyl',$conn);
$sql="select * from sysobjects where Xtype='V' and status>=0";
$result=mssql_query($sql);
while($res=mssql_fetch_array($result,MSSQL_ASSOC)){
print_r($res);
}
mssql_close($conn);
?>

注意连接时的SERVER1字串,此即为freetds配置文件里的SERVER1,连接将使用配置文件里的编码UTF-8;若SERVER1改用IP地址代替,则连接默认使用sql server2008默认的编码,一般为Latin1-Gerneral,容易导致中文乱码。

中文乱码的另一种解决方案:sql语句写成:select  DEPT1 collate Chinese_PRC_CI_AS dept1 from xxxxx。

 

posted on 2016-06-21 13:01  nozuodie  阅读(382)  评论(0编辑  收藏  举报

导航