PHP5.4 如何连接MS Sql Server

在Windows上使用XAMPP的PHP5.4版本连接MS SQL Server时,由于PHP5.3以上版本不再支持mssql扩展,需要下载SQL Server Driver for PHP。将.dll文件复制到ext目录,修改php.ini添加扩展,根据线程安全类型选择正确dll。若遇到初始化模块错误,检查dll版本与PHP版本一致性。当sqlsrv_connect报错,需安装Microsoft SQL Server 2012 Native Client。即使SQL Server为2008版,也可能需要2012 Native Client。

安装好xampp后,如果你的php需要访问ms sqlserver数据库,就需要这个步骤,否则会出错:

Fatal error: Call to undefined function sqlsrv_connect() in D:\appServ


windows系统下,PHP5.3以上的版本已经不支持mssql扩展,所以如果你需要和sql server通信需要到http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx自行下载微软提供的The SQL Server Driver for PHP。

下载后解压缩,将所有的.dll文件拷贝到php安装目录的ext文件夹中,接下来打开php.ini,添加以下语句打开php_sqlsrv和php_pdo_sqlsrv扩展:
——————————————————–
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_54_ts.dll
[PHP_SQLSRV]
extension=php_sqlsrv_54_ts.dll

—————————————————

这里的54表示的是php5.4,如果你的是5.3版,就改成53,如果你的PHP版本是线程安全的,那么你的PHP安装目录下应该有一个php5ts.dll,与这里的两行语句对应,如果是php5nts.dll,那么上面的语句应该是:
—————————————————————-
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_54_nts.dll
[PHP_SQLSRV]
extension=php_sqlsrv_54_nts.dll
—————————————————-


重启后,如果出现了这个错误:

PHP Startup sqlsrv Unable to initialize module

则表明你的php.ini中配置的dll版本、ext中放的dll版本和实际php的版本不一致。查看当前php版本的方法是:http://localhost:port/,查看php状态。


重启后上述错误不再出现,但是qlsrv_connect($Server,$conInfo); 却总是运行不过,打出错误信息:

$conInfo=array('Database'=>$database,'UID'=>$uid,'PWD'=>$pwd);
$link=sqlsrv_connect($Server,$conInfo); 

if( $link ){
	// echo "Connection established.\n";
}
else{
	//echo "Connection could not be established. ";
	print_r( sqlsrv_errors(), true);
   if( ($errors = sqlsrv_errors() ) != null) {
		foreach( $errors as $error ) {
			echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br />";
			echo "code: ".$error[ 'code']."<br />";
			echo "message: ".$error[ 'message']."<br />";
		}
	}
	die("");
}

这一次看到问题所在了:

SQLSTATE: IMSSP<br />code: -49<br />message: This extension requires the Microsoft SQL Server 2012 Native Client...

下载Microsoft SQL Server 2012 Native Client进行安装。

这下就ok了。


最后有点疑惑:

我的sql server装的本来是2008版的,为什么需要Microsoft SQL Server 2012 Native Client?




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值