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 相关文章推荐
php中var_export与var_dump的区别分析
Aug 21 PHP
php截取后台登陆密码的代码
May 05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 PHP
php编写的一个E-mail验证类
Mar 25 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
May 18 PHP
Zend Framework数据库操作方法实例总结
Dec 11 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
php使用curl下载指定大小的文件实例代码
Sep 30 PHP
Yii框架的布局文件实例分析
Sep 04 PHP
Thinkphp 框架扩展之驱动扩展实例分析
Apr 27 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
一个颜色轮换的简单例子
2006/10/09 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
2017/03/09 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
Python正则表达式介绍
2012/08/06 Python
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
python解释器spython使用及原理解析
2019/08/24 Python
python已协程方式处理任务实现过程
2019/12/27 Python
python实现在一个画布上画多个子图
2020/01/19 Python
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
10的分与合教学反思
2014/04/30 职场文书
小学班主任培训方案
2014/06/04 职场文书
武当山导游词
2015/02/03 职场文书
公司承诺书格式范文
2015/04/28 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL