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 相关文章推荐
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
Aug 08 PHP
php木马webshell扫描器代码
Jan 25 PHP
php中通过数组进行高效随机抽取指定条记录的算法
Sep 09 PHP
跟我学Laravel之快速入门
Oct 15 PHP
PHP实现获取FLV文件的时间
Feb 10 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
Mar 17 PHP
thinkPHP中session()方法用法详解
Dec 08 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 PHP
PHP实现的文件上传类与用法详解
Jul 05 PHP
php中文乱码问题的终极解决方案汇总
Aug 01 PHP
Laravel模型间关系设置分表的方法示例
Apr 21 PHP
PHP7基于curl实现的上传图片功能
May 11 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
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
大学生通用个人的自我评价
2014/02/10 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
颐和园的导游词
2015/01/30 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
如何用JS实现简单的数据监听
2021/05/06 Javascript