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

(0)

相关推荐

  • win2008 r2 服务器php+mysql+sqlserver2008运行环境配置(从安装、优化、安全等)

    win2008 r2 安装 http://www.jb51.net/article/38048.htm iis的安装 http://www.jb51.net/article/86390.htm php的安装注意事项: 下载非安全线程 版本 nts php 5.2.17 http://www.jb51.net/softs/268745.html 其它版本可以到 http://museum.php.net/php5/里面很多经典的老版本. PHP 5.5 (5.5.36) VC11 x64 Non

  • PHP 5.6.11中CURL模块问题的解决方法

    按照网上的教程写了一个cURL的小例子,在apache环境下执行,一点反应也没有,放在IIS环境里就ok的,感觉问题一定出在动态连接库上,因为配置文件里的php_curl.dll已经打开了,而且在iis上ok: 网上找了一些解决方案: 设置了[环境变量]:phpext,PHPRC:无效 把php_curl.dll 放到apache/bin下:无效 检查了一下apache/bin目录下也有这两个libeay32.dll,ssleay32.dll个文件:没问题 最后试了一下,把当前php根目录下的l

  • Linux编译mssql扩展使用php连接sqlserver2008的使用步骤

    1.安装配置freetds 复制代码 代码如下: wget http://mirrors.xmu.edu.cn/ubuntu/archive/pool/main/f/freetds/freetds_0.82.orig.tar.gztar zxf freetds_0.82.orig.tar.gzcd freetds_0.82./configure --prefix=/sxmobi/Software/common/freetds --enable-msdblibmake && make ins

  • Win2003+apache+PHP+SqlServer2008 配置生产环境

    安装前的准备: 1.Apache2.2.2 2.PHP5.2.17 3.SqlServer2008 4.sqlncli.msi(SqlServer客户端,可以到微软官方网站去下载) 5.ntwdblib.dll (2000.80.194.0) 6.SQLSRV20.exe,即MicrosoftDriver 2.0 for PHP for SQL Server(sql server 2005 及2008使用SQLSRV20.exe, SQL Server 2010使用SQLSRV30.exe)(需

  • 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位

  • nginx访问报403错误的几种情况详解

    目录 一 问题描述 1.1 情况一:确保nginx的配置文件是否root用户权限 1.2 情况二:确保nginx的配置文件代理的路径 1.3 情况3:权限问题,如果nginx没有web目录的操作权限,也会出现403错误 补充:常见的HTTP状态码 总结 一 问题描述 在真实开发环境中,遇到nginx访问报403的错误 1.1 情况一:确保nginx的配置文件是否root用户权限 启动用户和nginx工作用户不一致所致 ps aux | grep "nginx: worker process&qu

  • SQL索引失效的11种情况详析

    目录 索引失效案例 [1]. 全值匹配 [2]. 最佳左前缀法则 [3]. 主键插入顺序 [4]. 计算.函数.类型转换(自动或手动)导致索引失效 [5]. 类型转换导致索引失效 [6]. 范围条件右边的列索引失效 [7]. 不等于(!= 或者<>)索引失效 [8]. is null可以使用索引,is not null无法使用索引 [9]. like以通配符%开头索引失效 [10]. OR 前后存在非索引的列,索引失效 [11]. 数据库和表的字符集统一使用utf8mb4 总结 数据库调优的大

  • Microsoft Sql server2005的安装步骤图文详解及常见问题解决方案

    一:安装sql server 2005过程中出现如下问题:"选择的功能中没有任何功能可以安装或升级": 解决方案:Microsoft SQL Server 2005→配置工具→SQL配置管理器→SQL Server 2005服务→右边的两个服务启动SQL Server FullTest Search() 和服务SQl Sever(计算机名) 二:无法将数CLSID写入\Software\Classes\PROTOCOLS\Handler\ms-help. 解决办法:退出电脑安全软件 三

  • SQL Server 2012 FileTable 新特性详解

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

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

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

  • MyBatis动态Sql之if标签的用法详解

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用if标签生成动态的Sql,主要包含以下3个场景: 1.根据查询条件实现动态查询 2.根据参数值实现动态更新某些列 3.根据参数值实现动态插入某些列 1. 使用if标签实现动态查询 假设有这样1个需求:根据用户的输入条件来查询用户列表,如果输入了用户名,就根据用户名模糊查询,如果输入了邮箱,就根据邮箱精确查询,如果同时输入了

  • SQL开窗函数的具体实现详解

    开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成.为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数的使用使得这些经典的难题可以被轻松的解决.目前在 MSSQLServer.Oracle.DB2 等主流数据库中都提供了对开窗函数的支持,不过非常遗憾的是 MYSQL 暂时还未对开窗函数给予支持. 开窗函数简介:与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是它不像普通聚合函数那样每组只返回一个值

  • sql ROW_NUMBER()与OVER()方法案例详解

    语法格式:row_number() over(partition by 分组列 order by 排序列 desc) row_number() over()分组排序功能: 在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where .group by.  order by 的执行. 例一: 表数据: create table TEST_ROW_NUMBER_OVER( id varchar(10) not null, name varchar(1

  • 将自然语言查询转换为SQL代码的AI工具使用详解

    目录 介绍 功能 本地安装 使用 仓库地址 介绍 人工智能可以帮助我们实现将自然语言查询和 SQL 代码进行互相转换,这种技术通过自然语言处理(NLP)和机器学习,训练模型来理解和生成自然语言和 SQL 代码之间的映射关系. SQL Translator 是一个使用人工智能将自然语言查询和 SQL 代码互相转换的工具.通过使用 SQL 和自然语言翻译器,你可以简单地用自然语言输入您的查询并获得相应的 SQL 代码,或者输入您的 SQL 代码并获得人类可读的翻译,使你无需了解 SQL 的专业知识,

随机推荐