php5.3.x连接MS SQL server2008
开篇
因为毕设老师需求的原因,虚拟旅游网站要求的数据库必须使用MS SQL server。
我最擅长的web编程语言是PHP,但是在PHP中链接MS SQL server是一件非常麻烦的事,我个人分析造成这种麻烦的原因:是因为使用PHP的一大优点就是免费,然而MS SQL server虽然图形化界面操作起来简单,但是其昂贵的授权费让人望而却步;加之MySQL不俗的性能和强大的社区支持,使得真正企业环境里,使用PHP + MS SQL server的人越来越少。
其实纵观网上的文章,之所以有人选择这样的组合(PHP + MS SQL server)是因为系统的遗留问题。比如php程序员要求在某企业网站上进行二次开发,或者企业原来就是用的MS SQL server数据库。总之,我经过十二小时的奋战,终于通信成功,现在把过程和经验记录如下。
1. 安装MS SQL server2008 express数据库
安装的过程比较简单。但是必须记住一点问题,安装时我们设置的——或者说是我们默认的——数据库实例名。
1.1 数据库默认的实例名
以MS SQL server2008 express为例,一般默认的实例名是 SQLEXPRESS。而我自行设置的是SQLSERVER,也就是sql server。
1.2 设置数据库的登陆方式
我们一定要给sa用户设置一个密码,以便我们将来编写程序访问数据库时的方便。我个人设置的密码是”6个1“。
2. 登录数据库
利用管理工具:SQL Server Management Studio,登陆数据库进行管理。如图1。

图1 登陆MS SQL server2008数据库
2.1登陆时的会遇到的问题
登录时我遇到了问题,如图2。

图2 登陆时遇到的问题
错误信息如下:
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) (Microsoft SQL Server,错误: 53)
2.2 问题的解决方案
在我百度了一些解决方案以后,我了解到,服务器名称不能填写默认的:(local)。应该以这样的格式来填写:计算机名称\实例名称。以我个人为例,如图3。

图3 正确的登陆填写
既然能登陆到数据库,就说明我们的安装是没有问题的。下面我们进行一些关于PHP的设置。
3 为PHP准备适当的库文件
PHP5.3以后,其连接数据库的原生代码是由Microsoft团队来维护的。我们需要的库文件(在windows下是.dll文件)在PHP的源码包里是没有的,所以我们需要另行下载。
参照PHP官方文档是最好的选择。
http://php.net/manual/zh/book.sqlsrv.php
3.1 下载并安装Microsoft SQL Server 2012 Native Client
说句题外话,这一步是我在写博客时,阅读PHP manual中才得知的。怪不得我第一遍在操作时,碰到了php报错,中文大意就是“本机没有安装Microsoft SQL Server 2012 Native Client”。开来英文好,能阅读官方文档是王道啊!
下载Microsoft SQL Server 2012 Native Client的网址如下:
http://php.net/manual/zh/sqlsrv.requirements.php
3.2 下载适当的Microsoft SQL Server Driver for PHP
由官方文档我们可以得知,对应于PHP5.3.x的适用程序是SQLSRV 3.0。下载网址如下:
http://www.microsoft.com/en-us/download/details.aspx?id=20098
3.3 选择适当的库文件
根据官方文档,我们把3.2步骤中下载的程序——SQLSRV30.EXE——解压缩以后,会得到8个驱动文件(驱动文件以.dll为结尾)。如图4。

图4 SQLSRV30.EXE解压缩展开之后
根据官方文档,php5.3线程安全版本应选择 php_pdo_sqlsrv_53_ts.dll 和 php_sqlsrv_53_ts.dll两个文件,放置在php根目录下的ext文件夹下。例如,在我的机器中,路径是D:\lamp\php5\ext。
3.4 怎么样得知自己的php是否线程安全
在phpinfo中,我们查看这样的一条信息。如图5。

图5 phpinfo输出信息
“enable”表示该php是线程安全版本的反之就是非线程安全。
4. 配置php.ini文件
关于php.ini文件的配置,完全可以参照如下的网址。
http://msdn.microsoft.com/en-us/library/cc296203(v=sql.105).aspx
4.1 使php加载SQLSRV驱动
在php.ini的拓展模块加载区——文件中extension那块位置,填写如下配置,使php默认加载SQLSRV 驱动。
extension=php_sqlsrv_53_ts.dll
4.2 使php加载PDO_SQLSRV驱动
在与4.1中同样的位置,填写如下配置。
extension=php_pdo_sqlsrv_53_ts.dll
为了使php开启pdo驱动,我们还要开启pdo驱动。
extension=php_pdo.dll
4.3验证pdo_sqlsrv是否加载成功
在phpinfo中看到画黄线的单词,表示加载成功。如图6所示。

图6 phpinfo的输出
5. 在php运行时动态加载
我也是现在才知道,php还有这样的神奇功能,让我们暂时注释掉php配置文件里给你刚刚写好的配置,试一下动态加载的功能。
根据官方文档,dl()这个函数在php5.3被废除了。我因此无法进行测试。
但是微软官方的php代码如下:
dl('php_pdo_sqlsrv_53_ts.dll');
6. 注意事项
在MS SQL server中,数据表能名称不能叫user,因为有个系统表的名称就是user!
php5.3.x连接MS SQL server2008的更多相关文章
- java连接ms sql server各类问题解析
首先先来说下使用微软自己开发的架包进行ms sql server数据库的连接时,sql 2000与sql 2005的连接方式略有不同: 1.首先驱动不一样,sql 2000的连接驱动包有三个,分别是: ...
- 网站添加数据出错,原来是MS SQL Server2008日志文件占据空间过大导致的
最近发现公司上线的八爪鱼招标网有部分功能出现问题,主要表现为无法向数据库插入数据:远程登陆到数据库服务器时,发现原本的40G空间都被数据库吃完了,于是打开MS SQL Server 2008对数据库进 ...
- PHP 5.3.X 连接MS SQL Server php_mssql.dll
在网上搜索了一下PHP 5.3.X 连接SQL Server的办法,有人也遇到了这个问题 原来PHP 团队在PHP 5.3 中移除了SQL Server的驱动和库,而微软自己开发了针对PHP的SQL驱 ...
- Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)
Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...
- php5.2 连接 SQL Server2008
如果你见到下面这一段输出的话,那么你有福了!!!! Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => ...
- Windows下连接php5.3+sql server2008
php连接sql server真是一件闹心的事, 折腾了许久,今天有了点起色,还是不错的. mssql extension is not available anymore on Windows wi ...
- cenos6.5 64位下PHP远程连接sql server2008成功案例
准备工作: 1.sql server2008服务器(开放远程端口,默认为1433,我用的是192.168.1.129) 2.安装好php的centos服务器 步骤: 1.php安装mssql扩展.ce ...
- Java连接Sql Server2008
参考:http://weistar.iteye.com/blog/1744871 准备工作: 1.下载JDBC驱动包:http://www.microsoft.com/zh-cn/download/d ...
- myEclipse6.5与数据库(SQL Server2008)连接遇到的问题(自己总结的干货)<用SSH框架的时候,用servlet+javabean+jsp的时候>
昨天因为学习SSH框架的搭建,时隔一年又重新遇到了myEclipse连接数据库的问题.废话不多说,上干货 (以下全部按照我遇到的问题的顺序,也就是没有顺序,就是任性) 请注意:这是在myEclipse ...
随机推荐
- Centos6.5建立本地YUM源
很多情况下公司的服务器是不允许连外网的,那么安装软件的时候就很不方便了,这里就需要建立一个本地YUM源了. 文件位置:/etc/yum.repos.d/ 后缀一定是.repo结束. 下面我们搭建 ...
- iOS Xcode 用 GitHub 托管项目
直接在xcode里用Github教程:http://jingyan.baidu.com/article/ab0b5630936ab6c15afa7d1c.html 经过本人尝试之后,发现,使用官网的客 ...
- iOS UI基础-8.0 UIAlertView使用
弹出框的使用 1.实现代理UIAlertViewDelegate 2.弹出框 // 弹框初始化 UIAlertView *alert = [[UIAlertView alloc] initWithTi ...
- 获取 Google USB 驱动程序
获取 Google USB 驱动程序 另请参阅 安装 USB 驱动程序 使用硬件设备 使用任何 Google Nexus 设备进行 ADB 调试时,只有 Windows 需要 Google ...
- vue中检测敏感词,锚点
当发布文章的时候,标题有敏感词 则检测有敏感词的接口成功的时候,写锚点 eg: _this .$alert("检测到标题有敏感词,请修改后再发布", "提示", ...
- 从零开始一起学习SLAM | 你好,点云
本文提纲 先热热身点云是啥你知道点云优缺点吗?点云库PCL:开发者的福音PCL安装指北炒鸡简单的PCL实践留个作业再走先热热身 小白:hi,师兄,好久不见师兄:师妹好,上周单应矩阵作业做了吗?小白:嗯 ...
- cocos2d-x JS 计算赋值时出现 NaN
NaN “Not a Number”.出现这个数值比较少见,以至于我们可以不理它.当运算无法返回正确的数值时,就会返回“NaN”值.NaN 值非常特殊,因为它“不是数字”,所以任何数跟它都不相等,甚至 ...
- 响应式布局css样式
核心css /*图片列表样式*/ .img-list{ margin:-15px 0 0 -15px; *display:inline-block; } /*响应式布局*/ @media screen ...
- SSH--完全分布式主机设置【克隆过安装过Hadoop的主机后】
====准备完全分布式主机的ssh==== 2018-12-21 14:27:47 1.删除所有主机上.ssh下所有文件 2.在s250主机上生成密钥对 $>ssh-keygen -t rsa ...
- mybatis之注解式开发之关联查询
package com.bjsxt.mapper; import org.apache.ibatis.annotations.Select; import com.bjsxt.pojo.Clazz; ...