PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
课前小知识普及: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数据库的更多相关文章
- [转]如何将高版本的SQL Server数据库备份到低版本的SQL Server
本文转自:https://blog.csdn.net/wang465745776/article/details/54969676 前提条件备份SQL Server服务器版本为:12.0.2000.8 ...
- 根据数据库帮助类采用事务插入图片到sql server数据库中
我们定义数据库为image类型,然后读取图片为字符流,再保存到数据库中,首先我们定义一个读取图片的公共类,此公共类以后会用到,所以可以建立相应的帮助类 public static byte[] Rea ...
- Amazon RDS 上的 Microsoft SQL Server » 导入和导出 SQL Server 数据库
导入和导出 SQL Server 数据库 Amazon RDS 支持使用完整备份文件 (.bak 文件) 对 Microsoft SQL Server 数据库进行本机备份和还原.您可以在单个便携式文件 ...
- Sql Server数据库备份和恢复:原理篇
本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...
- sql server数据库保存图片或者其他小文件
原文:sql server数据库保存图片或者其他小文件 测试用sql server数据库保存图片或者其他小文件. 文件流字段用varbinary类型. static void Main() { App ...
- JeeSite如何正确连接SQL SERVER 数据库
JeeSite如何正确连接SQL SERVER 数据库 jeesite介绍 感谢jeesite项目的作者thinkgem. 没有你我也不会更改这数据源非了恁大的劲,,,,嘻嘻嘻说多了. JeeSite ...
- python 使用pymssql连接sql server数据库
python 使用pymssql连接sql server数据库 #coding=utf-8 #!/usr/bin/env python#------------------------------ ...
- ThinkPHP连接sql server数据库
亲身经历,在网上找连接sql server数据库的方法,还是不好找的,大多数都是照抄一个人的,而这个人的又写的不全,呵呵,先介绍一下我连接的方法吧.如果你是用THINKPHP连接,那么最重要的就是配置 ...
- (火炬)MS SQL Server数据库案例教程
(火炬)MS SQL Server数据库案例教程 创建数据库: CREATE DATABASE TDB //数据库名称 ON ( NAME=TDB_dat,//逻辑文件名 在创建数据库完成之后语句中引 ...
- SQL Server数据库邮件发送异常案例
最近遇到两起关于SQL Server数据库邮件发送异常的案例,这些问题也有点意思,顺便记录一下.方便以后遇到类似问题的人参考,不要被这些问题弄得抓狂! 案例1:我们一台数据库服务器突然发送邮件都不 ...
随机推荐
- Spring IOC之Classpath扫描和管理的组件
在前面的大部分例子我们使用XML去指明配置数据去定义在Spring容器中的每一个BeanDefinition.上一节我们展示了如何在 代码层注解的方式来提供大量的配置信息.即使在这些例子中,但是,基础 ...
- HashMap之Hash碰撞冲突解决方案及未来改进
说明:参考网上的两篇文章做了简单的总结,以备后查(http://blogread.cn/it/article/7191?f=wb ,http://it.deepinmind.com/%E6%80%A ...
- Dotfuscator自定义规则中的元素选择
Dotfuscator是专业的.NET程序代码保护软件.是支持规则自定义的,你可以对重命名.程序控制流.字符串加密等等功能自定义规则.在进行规则自定义过程中,可以通过元素的不同选择,满足自己的程序需要 ...
- POJ Big Christmas Tree(最短的基础)
Big Christmas Tree 题目分析: 叫你构造一颗圣诞树,使得 (sum of weights of all descendant nodes) × (unit price of the ...
- ASP.NET MVC + EF 利用存储过程读取大数据
ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK 看到本文的标题,相信你会忍不住进来看看! 没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询, ...
- Metadata是.NET平台的核心灵魂--(转载)
(转载)Metadata是.NET平台的核心灵魂 July 7th, 2010 jzli Leave a comment Go to comments 网友来信:李老师,您好!我参加过你去年到我们公司 ...
- 什么是Angular JS?
Angular JS学习笔记——什么是Angular JS? Angular JS是一个由Google维护的开源的Javascript框架,主要作者为: Misko Hevery(angular JS ...
- win32多线程-异步过程调用(asynchronous Procedure Calls, APCs)
使用overlapped I/O并搭配event对象-----win32多线程-异步(asynchronous) I/O事例,会产生两个基础性问题. 第一个问题是,使用WaitForMultipleO ...
- url在线编码和解码
在工作中,经常遇到encode之后的url.想查看里面的某个参数的时候,很不直观.今天在网上搜了一下对url在线编码和解码的网站.对我来说,使用起来很方便.而且这个网站里面,不仅仅有对url的编码和解 ...
- MySQL的数据类型,MySQL增删改--添加主外键、添加属性、删除主外键、改表名、获取系统当前时间等
ls /etc/rc.d/init.d/mysql56service mysql56 start ps aux |grep "mysql"|grep "socket=&q ...