PHP连接MSSQL数据库的方法,PHPWAMP如何连接MSSQL数据库(极度详细)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP连接MSSQL数据库的方法,PHPWAMP如何连接MSSQL数据库(极度详细)相关的知识,希望对你有一定的参考价值。


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



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

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



其实你平时只要多逛逛微软的网站,多看看数据库相关的英文文档,该有的都有,

好了,我们下面演示几个案例吧,分别演示几个主流PHP版本连接MSSQL数据库的方法。


本文演示的是我自己制作的PHP纯绿色集成环境,要是你用的是其他集成环境,或者是自己独立安装的,其实道理是一样的,没啥区别,不过我还是建议你使用我的这款集成环境,我所集成的组件全部是完整版,完美绿化,和你自己安装的没区别的,省心省力,我平时都在用自己的这款集成环境,放在U盘随时使用。


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

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

最后想想,我做这破软件原本也是为了方便自己,有风险的事情还是别干了吧、、、、

你们可以自己安装好数据库后,按照我的方式去连接就可以了,已经写的很详细了。


预告一下:后期我也会制作Linux下的PHPWAMP,进度取决于我有没有时间,Mac系统的也在考虑,不知道有方面需求的用户多不多,不过对Mac系统不是特别了解,需要研究研究,最近工作也挺忙的,一个人时间有限,估计进度会很慢。


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

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




php5.3连接MSSQL数据库案例,PHPWAMP中,点这里,默认启动的是php5.3,我们先启动一下(想用其他PHP版本的,自行切换吧)

技术分享


启动后,点击浏览网站

技术分享



然后拉倒底部,点击“点击此处查看phpinfo文件”,查看更加详细的phpinfo文件

技术分享




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

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


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

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

技术分享


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

因为要选择对应的驱动程序,所以要判断是非线程安全还是线程安全,微软公司提供了相关驱动,用于PHP支持MSSQL数据库。那么我下面有这么多版本的驱动,应该选哪个呢

(Lccee提示你:这些驱动在这篇文章的附件里面下载,包含了php所有版本的驱动)

技术分享



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

所以要选择的是php_pdo_sqlsrv_53_ts_vc6.dll和php_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 = Off”改为“mssql.secure_connection = On”

技术分享



双击此处重启动当前apache即可

技术分享



然后能搜到sqlsrv即可,如下图所示

技术分享

技术分享



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

首先我们来查看一下,数据库的端口号是多少,右键“新建查询”

技术分享



输入exec sys.sp_readerrorlog 0, 1, ‘listening‘ 然后右键执行

技术分享


发现端口号是默认的端口号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";




好,我们打开此页面看看效果,效果如下,提示连接成功,说明连接得了

技术分享



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

技术分享





前面我们不是在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 />";
     
}

?>


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

技术分享



当然,如果你把密码111111改成错误的888888,

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

技术分享


那么就显示连接错误了,如下图,下图是密码错误时显示的。

技术分享



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

这个数据库里面有个表叫phpwamp

技术分享




然后我把代码变成这个

<?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>";
}

?>


这时候,我们再来看看,运行后,就读出这个表的内容了

技术分享





下面再演示一下,当你在服务器上用站点管理创建的站点又如何配置

先把主界面修改成80端口,如下图所示。

技术分享

技术分享



修改端口后如图切换到任意处于apache2.4的PHP版本,php5.5、php5.6、php7都可以

技术分享



然后打开apache2.4站点管理即可,其他步骤和前面一样,

创建站点后,右键站点可以打开对应的php.ini文件

技术分享


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

技术分享



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

技术分享



然后点击此处运行站点,如下图

技术分享


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

如果不明白,可以看看我这边文章:http://lccee.blog.51cto.com/10514884/1887604

技术分享



下图为域名浏览的效果图

技术分享




好环境运行正常,我们来看一下php5.4版本的phpinfo()服务器信息,点击此处进入,如下图

技术分享


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

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

技术分享


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

php_pdo_sqlsrv_54_ts.dll 和 php_sqlsrv_54_nts.dll,如下图

技术分享



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

技术分享



然后右键站点打开与之对应的php.ini配置文件

技术分享



在打开的php.ini文件中

extension=php_sqlsrv_54_ts.dll

extension=php_pdo_sqlsrv_54_ts.dll

加入上面这两行,如果存在就去掉前面的;号,如果不存在,请添加进去

搜索“mssql.secure_connection = Off”改为“mssql.secure_connection = On”

技术分享



然后重启动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版本也是一样的道理,依样画葫芦即可,相关DLL在这文章的附件里面下载即可。




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


 运行环境上遇到任何问题都可以来我博客提问:http://lccee.blog.51cto.com/10514884/d-1




本文出自 “Lccee” 博客,请务必保留此出处http://lccee.blog.51cto.com/10514884/1889722

以上是关于PHP连接MSSQL数据库的方法,PHPWAMP如何连接MSSQL数据库(极度详细)的主要内容,如果未能解决你的问题,请参考以下文章

如何用PHP连接SQL Server

[简约webAPI]php连接MSsql server的五种方法总结

php连接MSSQL

php+mssql 访问速度慢是啥原因?

PHP把MSSQL数据导入到MYSQL的方法

PHPWAMP快速自定义Mysql历史版本,吸纳其他集成环境的Mysql数据库