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 应用程序的安全 -- 不能违反的四条安全规则
Nov 26 PHP
php 代码优化的42条建议 推荐
Sep 25 PHP
PHP中实现汉字转区位码应用源码实例解析
Jun 14 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
Apr 26 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
Jun 01 PHP
一组PHP加密解密函数分享
Jun 05 PHP
PHP实现批量上传单个文件
Dec 29 PHP
php实用代码片段整理
Nov 12 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 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
如何过滤高亮显示非法字符
2006/10/09 PHP
php采集速度探究总结(原创)
2008/04/18 PHP
php动态变量定义及使用
2015/06/10 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
thinkphp分页集成实例
2017/07/24 PHP
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
Django如何自定义分页
2018/09/25 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
python的等深分箱实例
2019/11/22 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
班组长岗位职责范本
2014/01/05 职场文书
一体化教学实施方案
2014/05/10 职场文书
力克胡哲观后感
2015/06/10 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android