PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

Posted in PHP onApril 16, 2021

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

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

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

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

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

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

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

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

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

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

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

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

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

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

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

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

(Lccee提示你:这些驱动的下载地址:http://download.csdn.net/detail/lccee/9732724

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

复制进去后如下图所示。

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

在打开的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”

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

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

<?php

 try {
   $dbName = "sqlsrv:Server=127.0.0.1;Database=lccee";   //这里是服务器IP地址和数据库名,端口不是默认的话记得改一下
   $dbUser = "sa";    //用户名
   $dbPassword = "111111";    //登陆密码

   $db = new PDO($dbName, $dbUser, $dbPassword);   
    
   if ($db)   
  {       
     echo "恭喜你!数据库连接成功了!!<br />";   
   }


     }
        catch (Exception $e){ echo "数据库连接失败!!";   }

?>

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

$dbName = "sqlsrv:Server=127.0.0.1,1688;Database=lccee";

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

$dbName = "sqlsrv:Server=127.0.0.1,1433;Database=lccee";

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

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

前面我们不是在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

$serverName = "NEPTUNE-PC"; //serverName\instanceName
$connectionInfo = array( "Database"=>"lccee", "UID"=>"sa", "PWD"=>"111111");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
 
if( $conn ) {
     echo "连接成功<br />";
}else{
     echo "连接失败<br />";
     
}

?>

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

<?php

$serverName = "NEPTUNE-PC"; //serverName\instanceName
$connectionInfo = array( "Database"=>"lccee", "UID"=>"sa", "PWD"=>"111111");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
 
if( $conn ) {
     echo "连接成功<br />";
}else{
     echo "连接失败<br />";
     
}

$query ="select * from phpwamp";
$result = sqlsrv_query($conn, $query);
while($row = sqlsrv_fetch_array($result)){
 
       print_r($row);
       echo "<br>";
}

?>

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

php_pdo_sqlsrv_54_ts.dll 和 php_sqlsrv_54_nts.dll,如下图

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

在打开的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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

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

<?php


$serverName = "NEPTUNE-PC"; //serverName\instanceName
$connectionInfo = array( "Database"=>"lccee", "UID"=>"sa", "PWD"=>"111111");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
 
if( $conn ) {
     echo "连接成功<br />";
}else{
     echo "连接失败<br />";
     
}

$query ="select * from phpwamp";
$result = sqlsrv_query($conn, $query);
while($row = sqlsrv_fetch_array($result)){
 
       print_r($row);
       echo "<br>";
}

?>

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

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

PHP 相关文章推荐
对Session和Cookie的区分与解释
Mar 16 PHP
使用 eAccelerator加速PHP代码的方法
Sep 30 PHP
php 表单数据的获取代码
Mar 10 PHP
php 变量定义方法
Jun 14 PHP
支持数组的ADDSLASHES的php函数
Feb 16 PHP
PHP中static关键字原理的学习研究分析
Jul 18 PHP
php实现的IMEI限制的短信验证码发送类
May 05 PHP
UTF-8正则表达式如何匹配汉字
Aug 03 PHP
php使用文本统计访问量的方法
May 12 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
PHP实现考试倒计时功能代码
Apr 16 #PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
PHP 对接美团大众点评团购券(门票)的开发步骤
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 02 #PHP
PHP解决高并发问题
php引用传递
Apr 01 #PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 01 #PHP
You might like
PHP4实际应用经验篇(7)
2006/10/09 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
PHP反射基础知识回顾
2020/09/10 PHP
关于JavaScript的一些看法
2009/05/27 Javascript
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
JS扩展方法实例分析
2015/04/15 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
详细介绍Python函数中的默认参数
2015/03/30 Python
python实现八大排序算法(1)
2017/09/14 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
django删除表重建的实现方法
2019/08/28 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
python构造IP报文实例
2020/05/05 Python
phpquery中文手册
2021/03/18 PHP
一套PHP的笔试题
2013/05/31 面试题
求职推荐信
2013/10/28 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
论文答谢词
2015/01/20 职场文书
销售经理工作检讨书
2015/02/19 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
goland 清除所有的默认设置操作
2021/04/28 Golang