Windows平台实现PHP连接SQL Server2008的方法_php技巧_脚本之家

2019-11-26 16:07栏目:龙竞技官网
TAG:

本文实例讲述了Windows平台实现PHP连接SQL Server2008的方法。分享给大家供大家参考,具体如下:

这两天有个php连接sql server的项目,顺便学习学习sql server 
说明:
 1:PHP5.2.x本身有个php_mssql.dll的扩展用来连接Sql server,但是这个dll只是用来连接低版本 Sql server的(2000以下版本),在Sql server 2005及以上版本无法使用mssql_connect连接到数据库。
 2:php5.3.x不再支持php_mssql.dll 拓展库了,及时使用php5.2.x中的php_mssql.dll也无法使用。 微软专门为PHP出了个SQL Server的扩展(Windows版本的),对于Windows下使用php开发SQL Server应用来说,这个扩展有利于利用SQL Server来开发php平台连接sql server数据库管理系统。
一、php5.3以下的版本连接sql server
5.3以下的版本扩展里面自带一个php_mssql.dll;接数据库的扩展,可以利用这个扩展链接数据库,(只限于链接低版本数据库)。
具体的步骤如下:
1:首先安装sql server,超级不好安装,我之前安装的是2008版本的,Windows过期后就不能用了,然后重装还装不上,最后重装系统才装上
2:确定SQL装的时候用的是混合认证模式,或SQL验证模式,然后打开php的配置文件(php.ini),开启mssql扩展(extension=php_pdo_mssql.dll前面的分号去掉)并且需要把mssql.secure_connection = On 重启后生效。
如果比较顺利的话已经可以连接数据库了,如果连不上就需要继续低下的配置:
龙电竞官网,3:检查ntwdblib文件的版本(php/下面和Apache/下面)下载正确的版本的 ntwdblib.dll(2000.80.194.0)覆盖现有的DLL文件,(把ntwdblib.dll,php_mssql.dll 复制到system32目录中也可以)ntwdblib.dll 用于PHP连接MSSQL2005或2008的驱动文件。
4:测试连接:mssql_connect('localhost,1433', '用户名', '密码');
二、php5.3+连接sql server
其实5.3以下的php版本已经很少用了,况且安全性和兼容性都不好,所以高版本的php还是比较常见的。实践证明低版本的php连接数据库成功率比较低(2005以上的版本几乎不能使用),推荐使用php5.3+ php使用微软专门的扩展 SQLSRV 来连接sqlserver数据库
步骤如下:
1:先到微软网站下载 SQL Server Driver for PHP (
龙电竞官网 1
其中的52、53表示就是php的5.2.x和5.3.x 版本,选择跟你php版本相匹配的;vc6或vc9的选择要看你使用的是什么web服务器软件,如果使用的是IIS那就选择vc9的,如果是Apache则选择vc6的,ts和nts的选择要看你安装的php版本是线程安全版的还是非线程安全版,ts是线程安全,nts是非线程安全。
如果不知道可以在phpinfo里看Zend Extension Build这个属性如下图:

如果你需要和sql server通信需要到 SQL Server Driver for PHP。这是一个自解压文件,解压后会得到以下几个文件:

龙电竞官网 2

php_sqlsrv_52_nts_vc6.dllphp_sqlsrv_52_ts_vc6.dllphp_sqlsrv_53_nts_vc6.dllphp_sqlsrv_53_nts_vc9.dllphp_sqlsrv_53_ts_vc6.dllphp_sqlsrv_53_ts_vc9.dllphp_sqlsrv_license.rtfSQLServerDriverForPHP.chmSQLServerDriverForPHP_Readme.htm

2:将扩展拷贝到拷到php/ext目录下,在php.ini文件,添加一下代码:
extension=在ext下的pdo扩展(用于pdo)
extension=在ext下的扩展
3:重启服务器,打开phpinfo();看到以下状态就证明添加扩展成功,

PS:上述压缩文件也可点击此处本站下载

龙电竞官网 3

其中,52,53表示PHP的5.2.X和5.3.X的版本;nts表示非线和安全,ts表示线程安全;vc6表示使用Apache作为Web Server,vc9表示使用IIS作为Web Server。

4:连接测试:

根据您的配置,将相应的DLL文件拷贝到php安装目录的ext文件夹中,接下来打开php.ini,添加以下语句打开php_sqlsrv和php_pdo_sqlsrv扩展:

 1 <?php
 2     $serverName = "(local)";
 3     $connectionInfo =  array("UID"=>"sa","PWD"=>"admin","Database"=>"db_online");
 4     $conn = sqlsrv_connect( $serverName, $connectionInfo);
 5     if( $conn ){
 6          echo "Connection established.n";
 7     }else{
 8          echo "Connection could not be established.n";
 9          die( var_dump(sqlsrv_errors()));
10     }
11     sqlsrv_close( $conn);
12 ?>
——————————————————–[PHP_PDO_SQLSRV]extension=php_pdo_sqlsrv_53_ts_vc6.dll[PHP_SQLSRV]extension=php_sqlsrv_53_ts_vc6.dll—————————————————

注意这里的连接不是用mssql_connect而是用sqlsrv_connect,在这个版本中,还有几个函数:
这个扩展为php新增了一系列sqlsrv_开头的函数,常用的如下:

这里的53表示的是php5.3,如果你的是5.2版,就改成52,如果你的PHP版本是线程安全的,那么你的PHP安装目录下应该有一个php5ts.dll,与这里的两行语句对应,如果是php5nts.dll,那么上面的语句应该是:

 1 sqlsrv_connect
 2 sqlsrv_close
 3 sqlsrv_commit
 4 sqlsrv_errors
 5 sqlsrv_fetch
 6 sqlsrv_fetch_array
 7 sqlsrv_fetch_metadata
 8 sqlsrv_num_rows
 9 sqlsrv_query
10 sqlsrv_rollback
11 sqlsrv_rows_affected
12 . . . 
—————————————————————-[PHP_PDO_SQLSRV]extension=php_pdo_sqlsrv_53_nts_vc6.dll[PHP_SQLSRV]extension=php_sqlsrv_53_nts_vc6.dll—————————————————-

详细信息可以参考: 开发文档

压缩包里有各个版本对于的dll文件,大家可以去仔细核查。

另外注意的是,如果使用这个扩展连接Sql server 2005以及以上版本的sql server(如sql server 2008),你还需要在机器上先安装 SQL Server Native Client
不然会出现如下错误:

版权声明:本文由龙竞技官网发布于龙竞技官网,转载请注明出处:Windows平台实现PHP连接SQL Server2008的方法_php技巧_脚本之家