php pdo mssql.dll,在linux上配置 PHP+PDO-MSSQL 心得

本文详细介绍了在Linux系统中如何配置PHP连接到MSSQL数据库,包括安装freetds,编译PHP,修改配置文件,以及使用PDO进行连接的步骤,最后通过测试代码验证连接成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WIN下用PHP读写MSSQL很简单,装上MSSQL客户端,再编辑PHP.INI开个扩展extension=php_mssql.dll ,就OK了. PDO的支持也是如此: extension=php_pdo_mssql.dll

可是linux下就不是那么简单的事情.

有过linux下读写MSSQL数据库经验的朋友,对于freetds这个东西肯定不陌生. 配置相对也不复杂:

解压并安装

代码:

$ tar zxvf freetds-stable.tgz

$ ./configure --prefix=/usr/local/freetds

$ make

$ su root

Password:

$ make install

然后编译PHP

代码:

$cd ../php-5.2.5

$./configure --prefix=/usr/local/php

--with-apxs2=/usr/local/apache/bin/apxs

.... 其它参数

--with-mssql=/usr/local/freetds

(也可以用 --with-sybase=/usr/local/freetds)

make 并 make install

代码:

$ make

$ su root

Password:

# make install

配置freetds

代码:

# vim /usr/local/freetds/etc/freetds.conf

找到类似的行

代码:

# A typical Microsoft SQL Server 7.0 configuration

;[MyServer70]

; host = 192.168.0.1

; port = 1433

; tds version = 7.0

把他们前面的冒号删除,把host改为你的MSSQL服务器主机名或IP地址.port改为自己的端口号,

tds version是SQLserver的版本,2000的是7.0 要是其它的版本,自己查查.

注意:[MyServer70] 非常重要. 将会在PHP代码中代替 mssql_connect("host","sa",""); 中的 host

关于freetds的其它如 ODBC/tsql/ 配置,请参考http://www.freetds.org/userguide/

好了,完成后重启WEB服务. PHPINFO里看看,应该有如图的信息:

phpinfo_mssql_phpv_1.jpg

再用如下代码测试:

PHP 代码:

$conn=mssql_connect("MyServer70","sa","password");mssql_select_db('dbname',$conn);$msquery="select firstname,lastname from table";$msresults=mssql_query($msquery);

while ($row=mssql_fetch_array($msresults)) {

echo"

".$row['titleofcourtesy'] ." ".$row['firstname'] ." ".$row['lastname'] ."n";

}?>

库和表存在并有数据.应该会返回正确的数据了.

如果有问题,查查配置文件是否正常,MSSQL服务器有没有开远程连接,防火墙等等.

到这里,MSSQL是可以用了.但感觉很不爽,PDO应该是PHP以后的标准.所以现在来搞定PDO-MSSQL:

因为有pdo-mysql配置经验,开始时我想当然的在编译PHP5时直接加参数--with-pdo-mssql=/usr/local/freetds

结果./configure时系统返回一个错误.

通过查看./configure --help 才知道,需要通过dblib来做.

代码:

$cd ../php-5.2.5

$./configure --prefix=/usr/local/php

--with-apxs2=/usr/local/apache/bin/apxs

.... 其它参数

--enable-pdo

--with-pdo-sqlite

--with-pdo-mysql=/usr/local/mysql/bin/mysql_config

--with-mssql=/usr/local/freetds

--with-pdo-dblib=//usr/local/freetds

$ make

$ su root

Password:

# make install

重启apache 刷新phpinfo页面.多了这一项表示成功:

phpinfo_pdo_mssql_phpv_1.jpg

老习惯,代码验证:

PHP 代码:

} catch (PDOException $e) {

echo"Failed to get DB handle: ".$e->getMessage() ."n";

exit;

}

echo'connent MSSQL succeed';$stmt=$dbh->prepare("select firstname,lastname from table");$stmt->execute();

while ($row=$stmt->fetch()) {print_r($row);

}

unset($dbh); unset($stmt);?>

输出正常..搞定!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值