PHP连接SQLserver问题

服务器环境是php5.4 + sqlServer 2008 express + IIS7.5,如何在window主机上配置PHP请看这里,注意下载的PHP要是非线程安全版本(VC9 x86 Non Thread Safe)并安装相应的VC2008运行库,下面说连接SQL2008。

首先要下载下载Microsoft Drivers 3.0 for PHP for SQL Server目前匹配的php版本为php5.4,php5.5等更新的版本不适用此扩展,下载解压后将所有的dll文件拷贝至php目录下的ext目录,然后修改php.ini并重启IIS就可以了:

extension_dir = “ext”
extension=php_sqlsrv_54_nts.dll
extension=php_pdo_sqlsrv_54_nts.dll

特别要注意的是在连接字符串的主机声明中要加上数据库实例的名称,因为用的sqlServer 2008 expresss所以下面的实例名称是SQLEXPRESS,要不然会出现莫名其妙的错误,例如下面的:

[Microsoft][SQL Server Native Client 11.0]命名管道提供程序: 无法打开与 SQL Server 的连接 

[Microsoft][SQL Server Native Client 11.0]与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。

写成下面3种格式都可以,只要带上实例名就好,远程连接可以换成远程主机地址,这个我也还没试过:

$serverName = “PC888\SQLEXPRESS”;  //主机局域网名称,或者本机IP也可以
$serverName = “localhost\sqlexpress”;  //本机地址,127.0.0.1也可以
$serverName = “(local)\sqlexpress”;  //另一种本机地址

端口号是不需要填写的,如后面填写1433或其他端口号,例如:$serverName = “NET8-PC\SQLEXPRESS,1433″,会出现错误“由于目标机器积极拒绝,无法连接 ”

完整面向过程连接代码如下:

<?php
$serverName = ‘(local)\SQLEXPRESS’;
$connectionInfo = array(‘UID’ => ‘sa’,’PWD’ =>’123456′,’DATABASE’ => ‘testdb’);
$conn = sqlsrv_connect($serverName,$connectionInfo);
if($conn === false){
echo “Unable to connect”;
die( print_r( sqlsrv_errors() ) );
}else{
echo ‘Connection successful’;
}
sqlsrv_close( $conn );
?>

也可以用PDO方法,方便好用。

发表评论

电子邮件地址不会被公开。