转发自:http://blog.csdn.net/lccee/article/details/54289076

课前小知识普及:MSSQL和SQL Server是同一个软件,叫法不同而已,MSSQL全称是Microsoft SQL Server,MSSQL是简写,有些人则喜欢直接叫SQL Server,我就比较喜欢这种叫法,有韵味、、、

最近有用户在使用PHPWAMP的时候,向我咨询一个问题,就是关于PHP如何连接MSSQL数据库。

平时我们搭建网站通常是PHP+Mysql数据库

不过在项目中,我们有时候必须要用到PHP+MSSQL数据库,那应该怎么办呢?

本文案例采用的PHP集成环境是我最新发布的版本PHPWAMP8.1.8.8,不管你用的是其他集成环境,还是自己安装,操作方法都是一样的,不过我还是建议大家使用我的这款PHPWAMP,我所集成的组件全是完整版,完美无错省心省力,放在U盘随时使用(支持自定义PHP版本,多版本同时运行)

其实早前我就有打算将MSSQL整个数据库也绿化到PHP集成环境里面,不用安装直接使用。

不过MSSQL数据库面对企业是收费的,所以我不敢将其绿化,万一追究起来,我就懵逼了。

你们可以自己先安装好数据库后,按照我的方式去连接就可以了,后面我会详细演示整个流程。

先来演示“本地测试时”常用的搭建方式,然后再演示网站在服务器上正式运营的搭建方式。

其实没啥区别,主要是演示常规用法以及站点管理里面的用法,让各位更加熟练的使用罢了。

先来给大家演示php5.3连接MSSQL数据库的具体做法吧(数据库是SQL Server 2008)

在PHPWAMP中,点这里默认启动的是php5.3,点击启动(其他PHP版本请自行切换)

启动后,点击此处浏览网站

在此页面的最底部,点击“点击此处查看phpinfo文件”,查看更加详细的环境内容。

来到phpinfo文件页面,看到这里的Thread Safety显示的是enabled

Thread Safety是线程安全的意思,而enabled是启动的意思,说明目前是线程安全。

如果Thread Safety显示的不是enabled,而是disabled,那么就是非线程安全。

看图片很明显,目前是线程安全,而且是VC6

PHP5.3以上的版本,连接MSSQL数据库不再是mssql.dll扩展,取而代之的是sqlsrv.dll扩展。

因为要选择对应的驱动程序,所以要判断是非线程安全还是线程安全,微软公司提供了相关驱动,

用于PHP支持MSSQL数据库。那么我下面有这么多版本的驱动,应该选哪个呢

(Lccee提示你:这些驱动的下载地址:https://pan.baidu.com/s/1c1IeLQo

刚才我们开启的PHP版本是5.3,然后又是线程安全,而且phpinfo页面显示是VC6

所以要选择的是php_pdo_sqlsrv_53_ts_vc6.dllphp_sqlsrv_53_ts_vc6.dll这两个。

所以很多用户说连接失败,就是因为你选择的驱动版本有问题,要对号入座才行。

 

打开PHPWAMP版本文件所在目录。

来到对应的ext目录,把php_pdo_sqlsrv_53_ts_vc6.dll和php_sqlsrv_53_ts_vc6.dll复制进去

这两个驱动文件一个是以pdo的方式连接,另一个则是以sqlsrv_connect的方式连接。

复制进去后如下图所示。

好,接着下一步,打开对应版本的PHP配置文件

在打开的php.ini文件中

extension=php_sqlsrv_53_ts_vc6.dll

extension=php_pdo_sqlsrv_53_ts_vc6.dll

加入上面这两行,然后搜索“mssql.secure_connection”这一段内容,

将“mssql.secure_connection = Off”改为“mssql.secure_connection = On”

修改完成后,双击此处重启当前apache服务器即可。

重启后,在phpinfo页面如果能搜到sqlsrv,说明已经成功配置好了,如图所示。

接下来我们来连接一下数据库,看是否正常!

在测试数据库之前,我们先来查看一下数据库端口号是多少,右键“新建查询”

输入exec sys.sp_readerrorlog 0, 1, 'listening' 然后右键点击执行。

发现端口号是默认的1433,这样我们在连接数据库的时候就不需要指定端口号了,

因为是默认端口,所有我们可以在PHP页面可以这么写。代码随便打打,证明能连接上就行了。

[php] view plaincopy
  1. <?php
  2. try {
  3. $dbName = "sqlsrv:Server=127.0.0.1;Database=lccee";   //这里是服务器IP地址和数据库名,端口不是默认的话记得改一下
  4. $dbUser = "sa";    //用户名
  5. $dbPassword = "111111";    //登陆密码
  6. $db = new PDO($dbName, $dbUser, $dbPassword);
  7. if ($db)
  8. {
  9. echo "恭喜你!数据库连接成功了!!<br />";
  10. }
  11. }
  12. catch (Exception $e){ echo "数据库连接失败!!";   }
  13. ?>

如果不是默认端口,假设是1688端口,那么上面这一行就应该改为。

[php] view plaincopy
  1. $dbName = "sqlsrv:Server=127.0.0.1,1688;Database=lccee";

当然,就算是默认端口,你也可以加上默认端口号,也是没错的,如下代码所示。

[php] view plaincopy
  1. $dbName = "sqlsrv:Server=127.0.0.1,1433;Database=lccee";

易错点:这里的ip+端口,不是冒号!而是逗号,如果写成“127.0.0.1:1433”是错误的!

 

好,我们打开此页面看看效果,运行代码提示连接成功,说明没问题。

假设我把连接里面的数据库密码改一下,再看,就提示失败了,如下图。

前面我们不是在php配置里加入了两个DLL吗,分别是

php_pdo_sqlsrv_53_ts_vc6.dll和php_sqlsrv_53_ts_vc6.dll

这两个驱动文件一个是以pdo的方式连接,另一个则是以sqlsrv_connect的方式连接。

 

 

而上面我们演示的连接方式是pdo,现在我们来用sqlsrv_connect的方式连接。

那么代码可以这么写,创建一个sqlsrv_connect.php文件,里面写上如下代码

[php] view plaincopy
  1. <?php
  2. $serverName = "NEPTUNE-PC"; //serverName\instanceName
  3. $connectionInfo = array( "Database"=>"lccee", "UID"=>"sa", "PWD"=>"111111");
  4. $conn = sqlsrv_connect( $serverName, $connectionInfo);
  5. if( $conn ) {
  6. echo "连接成功<br />";
  7. }else{
  8. echo "连接失败<br />";
  9. }
  10. ?>

然后再测试看,也是连接成功了!

假如我把正确的密码111111改成了错误的密码888888,

(具体的数据库密码,看你自己的MSSQL数据库,我的密码是111111

那么就显示连接错误了,把正确密码改成错误以后,就显示连接失败了。

下面我们再改一下代码,读取数据库表里的内容,这是我创建的数据库,

数据库名为Lccee,在这个数据库里面有个表叫phpwamp。

然后我随便添加几行代码,用来读出数据表里面的内容。

[php] view plaincopy
  1. <?php
  2. $serverName = "NEPTUNE-PC"; //serverName\instanceName
  3. $connectionInfo = array( "Database"=>"lccee", "UID"=>"sa", "PWD"=>"111111");
  4. $conn = sqlsrv_connect( $serverName, $connectionInfo);
  5. if( $conn ) {
  6. echo "连接成功<br />";
  7. }else{
  8. echo "连接失败<br />";
  9. }
  10. $query ="select * from phpwamp";
  11. $result = sqlsrv_query($conn, $query);
  12. while($row = sqlsrv_fetch_array($result)){
  13. print_r($row);
  14. echo "<br>";
  15. }
  16. ?>

然后保存,这时候我们再来看看,运行后就读出这个数据表里的内容了。

最后我们再演示一下,在服务器上用站点管理创建的站点如何连接MSSQL数据库。

 

开始我们的教程,第一步先把主界面修改成80端口,如下图所示。

修改端口后切换到任意处在apache2.4之下的PHP版本,php5.5、php5.6、php7都可以。

然后打开apache2.4站点管理,如下图所示。

建立站点,如图所示(Apache2.4站点管理可建立无数站点,每个站点可指定不同的PHP版本,也可以自定义设置PHP版本,还可以多个不同PHP版本同时运行,右键功能丰富)如图下所示,我选的是php5.4这个版本,填写完毕后点击“添加站点”

添加后左侧站点列表里就会出现了添加的站点,右键站点选择“生成此站hosts内容”

然后点击此处的按钮去运行站点,如下图红色箭头所示。

右键站点,选择“域名浏览该网站”,就可以用域名浏览(在服务器上再进行域名解析就可以了)

如果不懂如何解析,可以看看我这篇文章:http://blog.csdn.net/lccee/article/details/53945196

点击“域名浏览该网站”后,我们就可以看到这个页面,如下图所示。

鼠标拉动滚动条往下看,在这里点击查看更加详细的phpinfo()信息。

可以看到在phpinfo文件页面,这里的Thread Safety显示的是enabled

Thread Safety是线程安全,而enabled是启动,那么说明目前是线程安全

目前的PHP版本是php5.4,所以我们应该选择的两个DLL文件是

php_pdo_sqlsrv_54_ts.dll 和 php_sqlsrv_54_nts.dll,如下图

和前面一样把这两个DLL复制到对应PHP版本的ext文件夹里面。

这时候我们回到站点管理界面,右键站点打开与之对应的php.ini配文件。

在打开的php.ini文件中

extension=php_sqlsrv_54_ts.dll

extension=php_pdo_sqlsrv_54_ts.dll

加入上面这两行,然后搜索“mssql.secure_connection”这一段。

把“mssql.secure_connection = Off”改为“mssql.secure_connection = On

修改后保存,再次重启Apache服务,创建一个sqlsrv_connect.php文件,里面写上如下代码

[php] view plaincopy
  1. <?php
  2. $serverName = "NEPTUNE-PC"; //serverName\instanceName
  3. $connectionInfo = array( "Database"=>"lccee", "UID"=>"sa", "PWD"=>"111111");
  4. $conn = sqlsrv_connect( $serverName, $connectionInfo);
  5. if( $conn ) {
  6. echo "连接成功<br />";
  7. }else{
  8. echo "连接失败<br />";
  9. }
  10. $query ="select * from phpwamp";
  11. $result = sqlsrv_query($conn, $query);
  12. while($row = sqlsrv_fetch_array($result)){
  13. print_r($row);
  14. echo "<br>";
  15. }
  16. ?>

然后浏览sqlsrv_connect.php文件,就能读出数据库里面的信息了,如下图

其他PHP版本也是一样的道理,依样画葫芦即可,相关DLL在这文章的附件里面下载即可。

最新版PHPWAMP集成的php5.2、php5.3、php5.4、php5.5、php5.6、php7都已安装了MSSQL数据库扩展

友情提示:如在phpinfo页面能搜到sqlsrv,但还是连不上数据库,可以在下面链接下载ODBC驱动程序安装。

ODBC驱动程序下载地址:http://download.csdn.net/download/lccee/9971114
PHP各版本支持MSSQL数据库驱动下载地址:http://download.csdn.net/detail/lccee/9732724

以后如果时间允许,我也会考虑制作一个Linux下的PHPWAMP,应网友的要求,Mac系统的也在考虑,不过对Mac系统不是特别了解,需要一定时间研究研究,最近工作也挺忙的,一个人时间有限,估计进度会很慢。

后期我会在PHPWAMP版本里配置好各版本PHP与MSSQL的连接,到时你们就不用自己配置了

学习交流群:364976091

【转发】PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库相关推荐

  1. 数据库应用程序开发基础篇—— .NET中SQL Server数据库的操作C#篇之一

    数据库应用程序开发基础篇-- .NET中SQL Server数据库的操作C#篇之一 写在前面:前面介绍了数据库系统的基本概念,SQl语句基本使用方法,接下来通过学习具体语言和具体数据库结合的应用开发来 ...

  2. SQL Server无法删除数据库 xxx,因为该数据库当前正在使用(如何删除一个Sql Server数据库)

    1.一般情况下删除一个Sql Server数据库: 新建查询→输入"drop database xxx(xxx为数据库名)"→执行. 但有时会报错:无法删除数据库 "li ...

  3. .mdf数据库恢复mysql_从 mdf ldf 文件恢复sql server 数据库

    欢迎进入Windows社区论坛,与300万技术人员互动交流 >>进入 1: 无需新建数据库,直接运行 USE master; GO CREATE DATABASE test ON (FIL ...

  4. 《转》VMware vSphere 5.1 学习系列之四:安装 SQL Server 数据库

    为什么80%的码农都做不了架构师?>>>    目 录 一.    vCenter Server数据库的配置要求    1 准备 vCenter Server 数据库    1 vC ...

  5. 在SQL Server数据库之间进行数据导入导出

    来源:http://kb.cnblogs.com/page/94464/ 在SQL Server数据库之间进行数据导入导出 (1).使用SELECT INTO导出数据 在SQL Server中使用最广 ...

  6. sqlserver date类型和字符串比较_基于SQL Server数据库搭建主从复制实现读写分离实战演练...

    一.课程介绍 读写分离(主从同步)从字面意思就可以理解,就是把对数据库的读操作和写操作分离开.读写分离在网站发展初期可以一定程度上缓解读写并发时产生锁的问题,将读写压力分担到多台服务器上.读写分离的基 ...

  7. Sql Server数据库中的用户及权限配置,保障数据库安全

    最近有个朋友的网站被攻击,漏洞是比较过时的SQL注入,在帮修复的过程中,发现数据库用的是超级管理员用户sa,提高数据安全性和服务器安全性的措施之一便是降低web应用数据库用户的权限,回顾了一下Sql ...

  8. 怎么从 SQL Server 数据库中导出 SQL 语句?

    同于直接/备份/恢复 或者 导入/导出 数据库操作. 新版本SQL Server客户端中还可以生成相对应的SQL语句. 非常方便与查看和与其他人共享. 操作步骤如下: 连接上数据库后, 右击数据库, ...

  9. SQL Server 数据库之SQL Server 数据库的安全设置

    SQL Server 数据库的安全设置 1. 概述 2. 更改登录用户验证方式 3. 创建与删除登录用户 4. 创建与删除数据库用户 5. 设置服务器角色权限 5.1. **查看角色属性** 5.2 ...

  10. Sql Server数据库备份和恢复:原理篇

    本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...

最新文章

  1. 中国万网域名注册量动态:12月上旬净增8424个
  2. PowerShell渗透工具Nishang
  3. ios之mknetworkkit笔记
  4. generatorConfig.xml头文件报红
  5. WeChat 隐私政策
  6. 利用vsftpd在Linux构建安全的FTP服务
  7. 志强:微商微信如何引流加人?
  8. 简易nginx load balance示例
  9. K3 LEDE踩坑专题
  10. COMSOL空气反应 模型框架
  11. Python实战:导出QQ聊天记录生成词云看看你和你的女友聊了什么
  12. html访问域名跳转,根据访问的域名跳转到指定目录的代码
  13. 微信小程序-点击按钮退出小程序
  14. 实验四:py实现求导数与隐函数偏导数
  15. HTML小白起步(一、闲聊篇)
  16. 掌握这些核心算法,拿不到10个offer你来找我,我锤你个不争气的
  17. 2021-06-28 什么是一清机跟二清机、费率、分润、MCC码_POS机
  18. 10、Kafka 消息订阅系统
  19. jdk1.8、jre1.8运行环境下载安装与环境配置
  20. DV SSL 与 OV SSL 的区别

热门文章

  1. jQuery DateTimePicker 日期和时间插件
  2. 07/11/13 资料整理
  3. 移动web开发常用JavaScript代码(转)
  4. EXSI 连接硬件USB pass-through
  5. 基于Struts 2的自定义类型转换器
  6. Tarjan算法学习笔记
  7. 树莓派 之 系统登陆及设置本地化(简体中文)
  8. PHP内核探索之变量(1)Zval
  9. Windows Phone 7的启动器和选择器
  10. Maven本地缓存清理小工具