作为纯正服务器脚本语言,php对mysql支持非常不错,最近因项目需求,要在MVC web框架下支持sql server,中间折腾很几次,最后搞定,贴上解决方案:
【1】先需要装扩展 https://www.microsoft.com/en-us/download/details.aspx?id=20098
可以看到里面有31,32,40几个版本,根据服务器php版本配置,首先查看xampp中php版本
sqlsrv 驱动
Version 4.0 supports PHP 7.0+
Version 3.2 supports PHP 5.6, 5.5, and 5.4
Version 3.1 supports PHP 5.5 and 5.4
Version 3.0 supports PHP 5.4.
安装好后把文件
php_pdo_sqlsrv_56_nts.dll
php_pdo_sqlsrv_56_ts.dll
php_sqlsrv_56_nts.dll
php_sqlsrv_56_ts.dll
放到php安装目录下的ext目录下 (ext是php5以后的 都是这个目录)
然后重启下apache,再用phpinfo测试下
显示php已支持连接sql server
【2】再需要装ODBC(不然还是连不上)
https://www.microsoft.com/zh-cn/download/details.aspx?id=36434
有一点需要注意,稍微正式一点的应用,都是应用放在一个服务器,数据库放在另一个服务器(java居多,毕竟JVM吃内存),第【1】和第【2】步都是装在应用服务器上(而不是在数据库服务器)
理论上成功了,实际操作一把连接sql server(本地项目直接获取数据库,并回调给web,本地php5.6版本,服务器win server 2008 r2,thinkphp3.2.3框架)
已经能正确调取了,只不过密码输错了,改正后就能正确调取数据
ps:有一点非常容易出错,在sql server中表都是大写字母,但conf.php中添加表前缀后,M实例化数据库表名应该小写,不然会出错
因为在thinkphp M方法中规定首字母大写 实例化表M('UserInfo')相当于实例化配好数据库的user_info表
而sql server中全是大写,thinkphp中应该M方法后全部小写,不然会报如下错误:
还有一种方法比较好用,适用于在框架中直接使用原生数据库语言,这点是我师兄和我说的,在tp文档中好像没怎么介绍(也许我看的不仔细)
应用于M方法,框架中定义好的查询是这种格式
[原生查询语句]
[框架查询语句]
[原生修改语句]
[框架修改语句]