ThinkPHP连接SQL Server数据库

前言

PHP+MySQL是天生的好搭档,在ThinkPHP中,我们也是通过配置直接连上MySQL,使用起来非常便捷,近日遇到了ThinkPHP连接SQL Server的问题,而如何使用ThinkPHP连接SQL Server已是老生常谈,查了网上很多资料都不适合,最后整合了多方资料,终于弄好了,下面是具体的方法,这里使用的是phpStudy,PHP版本选择的是PHP5.3n。

配置过程

  1.首先打开ThinkPHP的配置文件,将数据库连接信息修改如下:

'DB_TYPE' => 'sqlsrv',// 数据库类型 
'DB_HOST' => '', // 服务器地址 
'DB_NAME' => '', // 数据库名 
'DB_USER' => '', // 用户名 
'DB_PWD' => '', // 密码
'DB_PORT' => '1433',// 端口 
'DB_PREFIX' => '', // 数据库表前缀 
'DB_CHARSET'=> 'utf-8', // 字符集


写好基本信息后保存,这时还不行,如果访问网页会提示“不支持系统服务sqlsrv”。

2.打开php.ini,来到extension扩展库区,向里面加入如下内容:

extension=php_pdo_sqlsrv_53_nts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll
extension=php_sqlsrv_53_nts_vc9.dll

extension=php_sqlsrv_53_ts_vc9.dll

这些东西是什么呢,其实是微软给PHP提供的连接扩展库,PHP默认是没有的(貌似在早期版本的PHP中还有带),需要我们自己去微软下载SQLSRV20.EXE这个文件,微软文档又说不同php版本对应下载哪一个SQLSRV,按照自己的php版本选择下载即可,其中,vc6表示使用Apache作为WEB服务器,vc9表示使用IIS作为WEB服务器,这里一定要区分清楚,尤其是自己使用LAMP搭建PHP环境的时候是vc6,使用PHPStudy搭建PHP环境的时候,是vc9.
vc6表示使用Apache作为Web Server,vc9表示使用IIS作为Web Server。
网址如下: https://msdn.microsoft.com/zh-cn/library/mt683517.aspx

PHP5.3之前的下载2.0版本的. 注意:nts和ts 的区别是安全线程和非安全线程,如何知道PHP是哪一个线程?用phpinfo()方法输出一下PHP的信息,找到Thread Safety,enable为安全线程,disabled为非安全线程,如下图为安全线程


知道了是安全线程还是非安全线程,那么在添加extension的时候就选择相应的那两个文件就可以了,加多了反而会报错。

下载完成后解压出来截图如下:
ThinkPHP连接SQL Server数据库_第1张图片

3.拷贝上面选定的文件到PHP目录下的ext文件夹中即可,这样我们就为PHP添加了sqlsrv的拓展文件。到这里,你是不是迫不及待地访问一下网页了,发现还是不行,但是这回提示的信息不再是“不支持系统服务sqlsrv”,而是提示没有安装“SQL Server Native Client”这个软件,后面给出了地址让你去下载,没错,连接SQL Server没有它不行,这里说一个题外话,Navicate是我们经常使用的可视化数据库管理软件,当我们在连接SQL Server的时候也经常会遇到关于“Native Client”的相关问题,多半是没有安装“SQL Server Native Client”这个软件。那么问题又来了,很多朋友以前在自己电脑上安装过SQL Server,然后又卸载了,由于没有卸载干净导致SQL Server Native Client又安装不上去了,这个由于未卸载干净导致的问题十分常见,不要着急,之前在一个论坛看到了某位大神说,用管理员身份运行cmd,在命令行里面输入:

secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose 

回车,等待命令执行完,就可以顺利的安装上去了,亲测十分有效,实在很感激他。这里附上SQL Server Native Client的下载地址:http://pan.baidu.com/s/1slGaFxj

如果是连接早期的SQL Server数据库,比如SQL Server 2000  建议使用10.0版本的。

结语

到这里的话你应该可以连接上SQL Server并操作数据库了,确实有点不容易,配置了很久,写这篇博客来记录一下,希望能帮到大家,同时不太正确的地方欢迎大侠们批评指正!

你可能感兴趣的:(PHP)