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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PHP各版本支持MSSQL数据库的驱动下载地址请在百度搜索这个标题“PHP支持MSSQL数据库的驱动程序、驱动支持所有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”这一段内容,

将“mssql.secure_connection = Off”改为“mssql.secure_connection = On”

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

重启后,在phpinfo页面如果能搜到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";

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

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

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

前面我们不是在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数据库,我的密码是111111)

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

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

数据库名为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>";
} ?>

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

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

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

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

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

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

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

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

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

如果不懂如何解析,可以看看我这篇文章http://www.cnblogs.com/phpwamp/p/6282363.html

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

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

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

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

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

php_pdo_sqlsrv_54_ts.dll 和 php_sqlsrv_54_nts.dll,如下图

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

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

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

修改后保存,再次重启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版本也是一样的道理,依样画葫芦即可,如有疑问可以联系我。

以后如果时间允许,我也会考虑制作一个Linux下的PHPWAMP,应网友的要求,Mac系统的也在考虑,不过对Mac系统不是特别了解,需要一定时间研究研究,最近工作也挺忙的,一个人时间有限,估计进度会很慢。

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

PHP各版本支持MSSQL数据库的驱动下载地址请在百度搜索这个标题“PHP支持MSSQL数据库的驱动程序、驱动支持所有PHP版本(最全)”

 

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库的更多相关文章

  1. [转]如何将高版本的SQL Server数据库备份到低版本的SQL Server

    本文转自:https://blog.csdn.net/wang465745776/article/details/54969676 前提条件备份SQL Server服务器版本为:12.0.2000.8 ...

  2. 根据数据库帮助类采用事务插入图片到sql server数据库中

    我们定义数据库为image类型,然后读取图片为字符流,再保存到数据库中,首先我们定义一个读取图片的公共类,此公共类以后会用到,所以可以建立相应的帮助类 public static byte[] Rea ...

  3. Amazon RDS 上的 Microsoft SQL Server » 导入和导出 SQL Server 数据库

    导入和导出 SQL Server 数据库 Amazon RDS 支持使用完整备份文件 (.bak 文件) 对 Microsoft SQL Server 数据库进行本机备份和还原.您可以在单个便携式文件 ...

  4. Sql Server数据库备份和恢复:原理篇

    本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...

  5. sql server数据库保存图片或者其他小文件

    原文:sql server数据库保存图片或者其他小文件 测试用sql server数据库保存图片或者其他小文件. 文件流字段用varbinary类型. static void Main() { App ...

  6. JeeSite如何正确连接SQL SERVER 数据库

    JeeSite如何正确连接SQL SERVER 数据库 jeesite介绍 感谢jeesite项目的作者thinkgem. 没有你我也不会更改这数据源非了恁大的劲,,,,嘻嘻嘻说多了. JeeSite ...

  7. python 使用pymssql连接sql server数据库

    python 使用pymssql连接sql server数据库   #coding=utf-8 #!/usr/bin/env python#------------------------------ ...

  8. ThinkPHP连接sql server数据库

    亲身经历,在网上找连接sql server数据库的方法,还是不好找的,大多数都是照抄一个人的,而这个人的又写的不全,呵呵,先介绍一下我连接的方法吧.如果你是用THINKPHP连接,那么最重要的就是配置 ...

  9. (火炬)MS SQL Server数据库案例教程

    (火炬)MS SQL Server数据库案例教程 创建数据库: CREATE DATABASE TDB //数据库名称 ON ( NAME=TDB_dat,//逻辑文件名 在创建数据库完成之后语句中引 ...

  10. SQL Server数据库邮件发送异常案例

      最近遇到两起关于SQL Server数据库邮件发送异常的案例,这些问题也有点意思,顺便记录一下.方便以后遇到类似问题的人参考,不要被这些问题弄得抓狂! 案例1:我们一台数据库服务器突然发送邮件都不 ...

随机推荐

  1. leetcode第32题--Search in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  2. LeetCode之Reverse Words in a String

    1.(原文)问题描述 Given an input string, reverse the string word by word. For example, Given s = "the ...

  3. SQL SERVER – Import CSV File Into SQL Server Using Bulk Insert – Load Comma Delimited File Into SQL Server

    CSV stands for Comma Separated Values, sometimes also called Comma Delimited Values. Create TestTabl ...

  4. Unity3D开发必备神器(Visual Studio Tools for Unity)

    Unity3D开发必备神器(Visual Studio Tools for Unity) 开发Unity3D程序你用的什么IDE呢? 1.MonoDevelop 2.VS 可能你的回答是这样的,我用的 ...

  5. WCF 服务端异常封装

    通常WCF服务端异常的详细信息只有在调试环境下才暴露出来,但我目前有需求需要将一部分异常的详细信息传递到客户端,又需要保证一定的安全性. 最简单的办法当然是在服务端将异常捕获后,序列化传给客户端,但这 ...

  6. 如何使用SetTimer MFC 不够具体

    转会:http://blog.csdn.net/ellor/article/details/1714741 Timer事件,即定时器事件,是在游戏编程中.常常使用的一个事件.借助它能够产生定时运行动作 ...

  7. Android开发Tips-1

    打算记录一些自己在开发过程中遇到的一些技巧性代码,方便以后遇到相似功能时能够快速的找到,那就从这里开始吧. 1,如何截取当前屏幕(不包括当前Activity的Title)并分享: a,获取当前Acti ...

  8. Visual Studio 2013发布Cloud Service至Azure China

    Visual Studio 2013发布Cloud Service至Azure China <Windows Azure Platform 系列文章目录> 之前有很多网友询问我如何通过VS ...

  9. Windows Server 服务器安全配置

    Windows Server 服务器安全配置 好吧,我标题党了.我只了解一些基本的安全配置.如果你是大湿,请绕道或者给予我严厉的批评让我进步谢谢. 编辑这篇文章用的编辑器编辑的,当我单击查看的时候发现 ...

  10. 强制卸载VS2013

    最近因为VS2013闹许可证过期问题,加之又发现新版本update5,所以就想卸掉重装,但是按照正常的卸载,发现卸载不了,再后来force强制卸载,OK了. force强制卸载: 首先如果安装了中文包 ...