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

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能看到相关的支持模块内容:

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

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

写一个测试的小例程:

<?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下运行结果如下:成功!

【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

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了;

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

如果出现如下提示:

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

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

如果正确的话,应该就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的几种情况详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-08-02 10:34:53

PHP 5.6.11 访问SQL Server2008R2的几种情况详解的相关文章

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

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位

OraclePL/SQL单行函数和组函数详解_oracle

正在看的ORACLE教程是:OraclePL/SQL单行函数和组函数详解. 1 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类:  2  3 单行函数  4  5 组函数   6  7 本文将讨论如何利用单行函数以及使用规则.  8  9 SQL中的单行函数 10 11 SQL和PL/SQL中自带很多类型的函数,有字符.数字.日期.转换.和混合型等多种函数用于处理单行数据,因此这些都可被统称

SQL Server 2012 FileTable 新特性详解

FileTable是基于FILESTREAM的一个特性.有以下一些功能: •一行表示一个文件或者目录. •每行包含以下信息: • •file_Stream流数据,stream_id标示符(GUID). •用户表示和维护文件及目录层次关系的path_locator和parent_path_locator •有10个文件属性 •支持对文件和文档的全文搜索和语义搜索的类型列. •filetable强制执行某些系统定义的约束和触发器来维护命名空间的语义 •针对非事务访问时,SQL Server配置FIL

PL/SQL单行函数和组函数详解

函数|详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 组函数 本文将讨论如何利用单行函数以及使用规则. SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符.数字.日期.转换.和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数.这些函数均可用于SELECT,WHERE.ORDER BY等子句中,例如下面的例子中就包含了TO_CHAR,UPPER

sql server的cube操作符使用详解

server|详解 cube操作符要使用cube,首先要了解group by其实cube和rollup区别不太大,只是在基于group by 子句创建和汇总分组的可能的组合上有一定差别,cube将返回的更多的可能组合.如果在 group by 子句中有n个列或者是有n个表达式的话,sqlserver在结果集上会返回2的n-1次幂个可能组合.注意:使用cube操作符时,最多可以有10个分组表达式在cube中不能使用all关键字例子:我们在数据库统计中常常要查询以下情况:如一个定单数据库,我们要知道

spring学习笔记(11)@AspectJ研磨分析[2]切点表达式函数详解

Spring中的AspectJ切点表达式函数 切点表达式函数就像我们的GPS导航软件.通过切点表达式函数,再配合通配符和逻辑运算符的灵活运用,我们能很好定位到我们需要织入增强的连接点上.经过上面的铺垫,下面来看看Springz中支持的切点表达式函数. 1. 方法切点函数 函数 入参 说明 示例 execution() 方法匹配字符串 满足某一匹配模式的的所有目标类方法连接点 execution(* com.yc.service.*.*(..))在配置service层的事务管理时常用,定位于任意返

基于SQL Server OS的任务调度机制详解_MsSql

简介      SQL Server OS是在Windows之上,用于服务SQL Server的一个用户级别的操作系统层次.它将操作系统部分的功能从整个SQL Server引擎中抽象出来,单独形成一层,以便为存储引擎提供服务.SQL Server OS主要提供了任务调度.内存分配.死锁检测.资源检测.锁管理.Buffer Pool管理等多种功能.本篇文章主要是谈一谈SQL OS中所提供的任务调度机制. 抢占式(Preemptive)调度与非抢占式(non-Preemptive)调度     数据

sql注入之新手入门示例详解_数据库其它

前言 在学习这篇文章之前,至于要学习了SQL注入的前提知识,可以参考之前写的一篇sql注入之必备的基础知识. 认识SQL注入 最开始就从最简单的开始,进入到less-1开始我们的SQL注入学习之旅. 通过改变http://localhost/sqlilabs/Less-1/?id=3的id值,页面上呈现不同的内容(username,password). 那么我们就可以猜测在后台中的SQL语句就是根据前台传入的id值来去对应的数据. 那么SQL语句的写法为: select username,pas

sql server 自定义分割月功能详解及实现代码_MsSql

在最近的项目开发过程中,遇到了Sql server自动分割月的功能需求,这里在网上整理下资料.       1.为何出现自定义分割月的需求 今天梳理一个平台的所有函数时,发现了一个自定义分割月函数,也就是指定分割月的开始日索引值(可以从1-31闭区间内的任何一个值)来获取指定日期所对应的分割月数值.这个函数当时是为了解决业务部门获取非标准月(标准月就是从每个月的第一天到最后一天组成一个完成的标准月份)的统计汇总数据的.例如:如果指定分割月的开始日索引值为5则表示某个月的5号到下个月的4号之间作为