PHP 5.6.11 访问SQL Server2008R2的几种情况详解


Posted in PHP onAugust 08, 2016

PHP天生支持MySQL,但是有时候也想让它访问SQL Server,该怎么办呢?

最近找了点资料,测试成功了PHP访问SQLSvr的几种情况,限于时间,还没有测试更多不同环境,把测试过的记录如下:

测试环境:win7 x64 sp1,IIS 7.5, Apache 2.4 32位版本,PHP 5.2.6 win32, PHP 5.6.11 win32 ts(线程安全版)

注:由于“Microsoft Drivers for PHP for SQL Server”驱动程序目前只有32位版,所以如果是使用sql server数据库的朋友,不建议使用php 64位,否则会导致无法连接 sql server 数据库的问题!

php 5.2.6在iis上成功访问了sql2000

php 5.2.6在iis上成功访问了sql2008r2

php 5.6.11在apache上成功访问了sql2008r2

【5.2.6 -> SQL2000】

为什么要用5.2.6这么旧的php版本做测试呢,因为php 5.2版本,内置了php_mssql.dll 模块,

打开了php.ini中的extension=php_mssql.dll 配置选项,默认好像就支持mssql2000了,

打开phpinfo能看到相关的支持模块内容:

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

PS.IIS 7.0下安装PHP现在方便了,可以通过一个第三方小工具 PHP Manager来安装,也可以方便的切换iis下的php版本,这不是本文的主要内容,这里就不介绍了;

php manager for iis 7 下载安装地址: http://phpmanager.codeplex.com/

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

写一个测试的小例程:

<?php
$server ="127.0.0.1\sql2000"; //服务器IP地址,如果是本地,可以写成localhost
$uid ="sa"; //用户名
$pwd ="yoooko"; //密码
$database ="master"; //数据库名称
//进行数据库连接
$conn =mssql_connect($server,$uid,$pwd) or die ("connect failed");
mssql_select_db($database,$conn);
//执行查询语句
$query ="select * from cs";
$row =mssql_query($query);
//打印输出查询结果
while($list=mssql_fetch_array($row))
{
print_r($list);
echo "<br>";
}
?>

在IIS 7.5下运行结果如下:成功!

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

【5.6.11 -> SQL2008R2】

5.6以上的PHP已经没有php_mssql.dll,貌似也不再原生支持sql2000以上版本的sql server了,要通过第三方模块,在微软官网找到了:

Microsoft Drivers for PHP for SQL Server

http://www.microsoft.com/en-us/download/details.aspx?id=20098

下载链接地址有四个文件:

•SQLSRV30.EXE
•SQLSRV31.EXE
•SQLSRV32.EXE
•SQLSRV40.EXE

分别支持不同的PHp版本

•Version 4.0 supports PHP 7.0+
•Version 3.2 supports PHP 5.6, 5.5, and 5.4
•Version 3.1 supports PHP 5.5 and 5.4
•Version 3.0 supports PHP 5.4.

如果是PHP 5.2要下载一个SQLSRV20.EXE,这个文件目前在网上也能很容易的找到;

(虽然5.2这么旧的版本早就该被淘汰了,但是考虑到某些环境还需要用它)

php_pdo_sqlsrv_52_ts_vc6.dll

php_sqlsrv_52_ts_vc6.dll

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

1. 我手里是PHP 5.6.11 win32 ts,要用到这个

php_sqlsrv_56_ts.dll
php_pdo_sqlsrv_56_ts.dll

这两个文件,复制到php\ext目录下,

2. php.ini 里加上以下两句:

extension=C:\PHP5\ext\php_sqlsrv_56_ts.dll
extension=C:\PHP5\ext\php_pdo_sqlsrv_56_ts.dll

3. 重启IIS或者Apache,

4. 通过phpinfo能够看到如下模块显示,我们的PHP应该此时就能访问SQL Server 2008R2了;

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

5、写一个小程序验证一下:

<?php
try { 
$dbName = "sqlsrv:Server=127.0.0.1\sql2008r2;Database=master"; 
$dbUser = "sa"; 
$dbPassword = "yoooko"; 
$db = new PDO($dbName, $dbUser, $dbPassword); 
if ($db) 
{ 
echo "database connect succeed.<br />"; 
}
}
catch (PDOException $e)
{ 
$content = iconv("UTF-8","gbk",$e->getMessage()); 
echo $content . "<br />";
}
//echo "Hello PDO to MS SqlSrv!";
?>

如果出现如下提示:

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

可能你还需要安装 Microsoft® ODBC Driver 11 for SQL Server® - Windows

下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=36434

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

如果正确的话,应该就OK了:

PS.由于新的模块是通过PDO方式访问SQL Server 2008R2,如果是本机访问,那么直接通过ip地址和sa账号就能访问了,

如果php和sql2008r2在不同电脑上,还得设置TCP 端口1433来访问,见下面第二张图,把动态端口改为0,把端口设置为14333如果你的SQL2000已经占用了1433,访问地址后面加个,xxxx端口号

sqlsrv:Server=192.168.1.xxx\sql2008r2,14333;Database=master

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

以上所述是小编给大家介绍的PHP 5.6.11 访问SQL Server2008R2的几种情况详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP 中执行系统外部命令
Oct 09 PHP
php基础知识:类与对象(1)
Dec 13 PHP
php 执行系统命令的方法
Jul 07 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
PHP中的错误处理、异常处理机制分析
May 07 PHP
php中使用临时表查询数据的一个例子
Feb 03 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
php之Smarty模板使用方法示例详解
Jul 08 PHP
ThinkPHP采用原生query实现关联查询left join实例
Dec 02 PHP
PHP实现QQ登录的开原理和实现过程
Feb 04 PHP
php根据命令行参数生成配置文件详解
Mar 15 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 #PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 #PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 #PHP
微信公众号开发之语音消息识别php代码
Aug 08 #PHP
PHP+JQuery+Ajax实现分页方法详解
Aug 06 #PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 #PHP
Thinkphp微信公众号支付接口
Aug 04 #PHP
You might like
php巧获服务器端信息
2006/12/06 PHP
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
php重定向的三种方法分享
2012/02/22 PHP
MySQL 日期时间函数常用总结
2012/06/12 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
flexigrid 参数说明
2010/11/23 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
关于js datetime的那点事
2011/11/15 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
vue--vuex详解
2019/04/15 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
详解elementUI中input框无法输入的问题
2020/04/27 Javascript
python的re模块应用实例
2014/09/26 Python
Python中isnumeric()方法的使用简介
2015/05/19 Python
Python运算符重载详解及实例代码
2017/03/07 Python
python抓取网页中链接的静态图片
2018/01/29 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
工商管理专业学生的自我评价
2013/10/01 职场文书
酒店销售经理岗位职责
2014/01/31 职场文书
市场部业务员岗位职责
2014/04/02 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
学校运动会通讯稿
2015/07/18 职场文书
诚信高考倡议书
2019/06/24 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技