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 相关文章推荐
如何去掉文章里的 html 语法
Oct 09 PHP
非常精妙的PHP递归调用与静态变量使用
Dec 16 PHP
PHP session_start()问题解疑(详细介绍)
Jul 05 PHP
PHP中对缓冲区的控制实现代码
Sep 29 PHP
php与java通过socket通信的实现代码
Oct 21 PHP
php读取目录所有文件信息dir示例
Mar 18 PHP
linux中cd命令使用详解
Jan 08 PHP
php实现图片转换成ASCII码的方法
Apr 03 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
php通过分类列表产生分类树数组的方法
Apr 20 PHP
PHP保存session到memcache服务器的方法
Jan 19 PHP
Laravel 验证码认证学习记录小结
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/05 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
微信小程序 地图定位简单实例
2016/10/14 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
ES6 十大特性简介
2020/12/09 Javascript
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
Python的条件语句与运算符优先级详解
2015/10/13 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
德国电子产品购物网站:TechInTheBasket德国
2018/12/07 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
体育教师个人的自我评价
2014/02/16 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS