`
zzc1684
  • 浏览: 1220967 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

PHP连接Microsoft SQL Server 2000/2005/2008

    博客分类:
  • PHP
阅读更多

工作总结之PHP连接Microsoft SQL Server 2000/2005/2008

 

最近由于工作需要用于 SQL Server,想做一个测试环境,SQL Server 2008不是刚出来,图个新鲜,就下载了2008版的,用了很多方法一直没能连接上SQL Server 2008。在网上找了一些资料,终于连接上了SQL Server 2008,整理了一下收集到的资料,利用中午休息时间,写个贴子发出来,让大家看看。呵呵!!

 

PHP自带的MSSQL扩 展php_mssql.dll原来是给SQL Server 2000用的,难怪连接不上2008?! -_-!!要使用SQL Server 2005以上版本,就要用到微软为PHP提供的最新第三方扩展SQL Server Driver for PHP才行,最新版本是2.0的,下载地址:

 

SQL Server Driver for PHP 1.1 (2009-10)

http://www.microsoft.com/downloads/details.aspx?familyid=CCDF728B-1EA0-48A8-A84A-5052214CAAD9&displaylang=en

SQL Server Driver for PHP 2.0 CTP1(2010-04)

http://www.microsoft.com/downloads/details.aspx?familyid=DF4D9CC9-459C-4D75-A503-AE3FCEB85860&displaylang=en

或者:http://www.microsoft.com/sqlserver/2005/en/us/PHP-Driver.aspx

想看中文详细使用资料可参考MSDN的,地址:

http://msdn.microsoft.com/zh-cn/library/cc296170(SQL.90).aspx

 

先来复习一下怎么样用PHP自带的扩展php_mssql.dll连接SQL Server 2000,用mssql系列函数来操作,和操作MySQL的一样。

1、打开PHP配置文件php.ini,找到;extension=php_mssql.dll把前面的分号去掉。

2、找到mssql.secure_connection = Off修改成 mssql.secure_connection = On。

3、把PHP文件夹下的php_mssql.dll和ntwdblib.DLL这两个文件拷贝到C:\windows\system32\文件夹下。

4、重启Apache,OK

 

测试一下:

 

  1. <?php
  2. //用mssql_connect
  3. $conn=mssql_connect('localhost','pandao','1987') or die('数据库连接不上');
  4. mssql_select_db('test',$conn);
  5. //query语句
  6. $Query="select * from news";
  7. $AdminResult=mssql_query($Query);
  8. //输出结果
  9. $Num=mssql_num_rows($AdminResult);
  10. for($i=0;$i<$Num;$i++)
  11. {
  12. $Row=mssql_fetch_array($AdminResult);
  13. echo($Row[1]);
  14. echo("<br/>");
  15. }
  16. ?>
复制代码

当然还可以用pdo和ODBC来连接SQL Server。

 

准备工作

 

下载驱动程序,我下载的是2.0的,下载后安装释放程序,里面有以下文件:

php_pdo_sqlsrv_52_nts.dll

php_pdo_sqlsrv_52_ts.dll

php_pdo_sqlsrv_53_nts_vc6.dll

php_pdo_sqlsrv_53_nts_vc9.dll

php_pdo_sqlsrv_53_ts_vc6.dll

php_pdo_sqlsrv_53_ts_vc9.dll

php_sqlsrv_52_nts.dll

php_sqlsrv_52_ts.dll

php_sqlsrv_53_nts_vc6.dll

php_sqlsrv_53_nts_vc9.dll

php_sqlsrv_53_ts_vc6.dll

php_sqlsrv_53_ts_vc9.dll

SQLServerDriverForPHP.chm(手册,英文够好的话,可以看看,嘿嘿)

SQLServerDriverForPHP_License.rtf

SQLServerDriverForPHP_Readme.htm(自述文件

 

下面是自述文件里的内容,我翻译一下:

 

驱动程序文件

PHP 版本

线程安全性

用于PHP .dll

php_sqlsrv_53_nts_vc6.dll

php_pdo_sqlsrv_53_nts_vc6.dll

5.3

no

php5.dll

php_sqlsrv_53_nts_vc9.dll

php_pdo_sqlsrv_53_nts_vc9.dll

5.3

no

php5.dll

php_sqlsrv_53_ts_vc6.dll

php_pdo_sqlsrv_53_ts_vc6.dll

5.3

yes

php5ts.dll

php_sqlsrv_53_ts_vc9.dll

php_pdo_sqlsrv_53_ts_vc9.dll

5.3

yes

php5ts.dll

php_sqlsrv_52_nts.dll

php_pdo_sqlsrv_52_nts.dll

5.2

no

php5.dll

php_sqlsrv_52_ts.dll

php_pdo_sqlsrv_52_ts.dll

5.2

yes

php5ts.dll

 

关于VC6和VC9的区别,还有非线程安全与线程安全

 

VC6 版本是使用 Visual Studio 6 编译器编译的,如果你是在windows下使用Apache+PHP的,请选择VC6版本。

VC9 版本是使用 Visual Studio 2008 编译器编译的,如果你是在windows下使用IIS+PHP的,请选择VC9版本。

Non Thread Safe就是非线程安全,在执行时不进行线程(Thread)安全检查;

Thread Safe 是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式而耗尽系统资源;

 

开始配置

 

我用的是APMserv 搭建的PHP环境(Apache 2.2.9+PHP 5.2.6+MySQL 5.1.28),想用线程安全的,所以选择php_sqlsrv_52_ts.dll和php_pdo_sqlsrv_52_ts.dll。

开始工作,先把文件拷贝到PHP文件夹下的ext目录下,然后在配置文件php.ini
Extensions后面加上:

;extension=php_sqlsrv_52_ts.dll

;extension=php_pdo_sqlsrv_52_ts.dll

再重启Apache。

最后测试一下是否成功,看一下phpinfo的sqlsrv

 

 

如图所示这样就表示连接成功了!!开始工作喽!

 

连接数据库

 

使用过SQL Server的人应该都清楚,SQL Server常用的有两种认证方式,一种是本地系统账户认证(Windows Authentication ),一种是使用用户名和密码(SQL Server Authentication ),第二种认证方式必须启用SQL Server的混合模式。

 

1.Windows Authentication连接部分代码段

 

  1. <?php
  2. $serverName = "(local)";
  3. $connectionInfo = array("Database"=>"test","ConnectionPooling"=>false);
  4. $conn = sqlsrv_connect( $serverName, $connectionInfo);
  5. if( $conn == false)
  6. {
  7.     echo "连接失败!";
  8.     die( print_r( sqlsrv_errors(), true));
  9. }
  10. ?>
复制代码

 

2.SQL Server Authentication连接部分代码段

 

  1. <?php
  2. $serverName = "(local)"; //数据库服务器地址
  3. $uid = "pandao"; //数据库用户名
  4. $pwd = "1987"; //数据库密码
  5. $connectionInfo = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>"test");
  6. $conn = sqlsrv_connect( $serverName, $connectionInfo);
  7. if( $conn == false)
  8. {
  9.     echo "连接失败!";
  10.     die( print_r( sqlsrv_errors(), true));
  11. }
  12. $query = sqlsrv_query($conn, "SELECT TOP 10 nid,title,content FROM test.dbo.news");
  13. while($row = sqlsrv_fetch_array($query)){
  14.     echo $row['nid']."-----".$row['title']."<br/>";
  15. }
  16. ?>
复制代码

 

由于我电脑没装SQL Server 2005,所以没有测试,SQL Server Driver for PHP是给2005和2008用的,应该是一样的,大家在时间可以测试一下,看是不是一样。

微软为PHP新增加了操作SQL Server 2005/2008的函数sqlsrv系列,下面是sqlsrv API,用法跟操作MySQL的基本一样,可以参考学习一下。

在PHPchina混了N久了,还是第一次在PHPchina发原创贴,在下文笔不行,写得不好,欢迎大家拍砖!

相关参考文章:

微软提供给PHP5的SQL Server扩展: sqlsrv (转载)

PHP连接SQL Server 2005 和 SQL Server 2008

 

API 参考 (SQL Server Driver for PHP)

 

用于 SQL Server Driver for PHP 的 API 名称是 sqlsrv。所有 sqlsrv函数都以 sqlsrv_打头,后跟动词或名词。后跟动词的函数用于执行特定操作,而后跟名词的函数用于返回特定形式的元数据。

SQL Server Driver for PHP 包含以下函数:

 

函数 说明
sqlsrv_begin_transaction 开始事务。
sqlsrv_cancel 取消语句;并放弃相应语句的所有未决结果。
sqlsrv_client_info 提供有关客户端的信息。
sqlsrv_close 关闭连接。释放与相应连接关联的所有资源。
sqlsrv_commit 提交事务。
sqlsrv_configure 更改错误处理和日志记录配置。
sqlsrv_connect 创建一个连接,并将其打开。
sqlsrv_errors 返回关于上一操作的错误和/或警告信息。
sqlsrv_execute 执行预定义语句。
sqlsrv_fetch 使下一行的数据可供读取。
sqlsrv_fetch_array 以数值索引数组、关联数组或这两种数组的形式检索下一行的数据。
sqlsrv_fetch_object 以对象形式检索下一行的数据。
sqlsrv_field_metadata 返回字段元数据。
sqlsrv_free_stmt 关闭语句。释放与相应语句关联的所有资源。
sqlsrv_get_config 返回指定配置设置的值。
sqlsrv_get_field 按索引检索当前行中的字段。可以指定 PHP 返回类型。
sqlsrv_has_rows 检测结果集是否具有一行或多行。
sqlsrv_next_result 使下一结果可供处理。
sqlsrv_num_rows 报告结果集中的行数。
sqlsrv_num_fields 检索活动结果集中的字段数。
sqlsrv_prepare 准备 Transact-SQL 查询,但不执行该查询。隐式绑定参数。
sqlsrv_query 准备 Transact-SQL 查询,并将其执行。
sqlsrv_rollback 回滚事务。
sqlsrv_rows_affected 返回有所修改的行的数目。
sqlsrv_send_stream_data 在每次调用函数时向服务器发送最多八千字节 (8 KB) 的数据。
sqlsrv_server_info 提供有关服务器的信息。

 

另可参考 PHP手册

 

概念

 

SQLSRV 常量

 

其他资源

 

SQL Server Driver for PHP 介绍
     编程指南

入门

PS:经测试这个扩展支持 MSSQL 2000/2005/2008全系列,这样完全可以不用PHP原来自带的php_mssql.dll了,而且最新的PHP5.3也没带php_mssql.dll了 2010-06-28

分享到:
评论

相关推荐

    SQLServer2000/2005/2008+MySQL5.0的数据库驱动包

    这些驱动包中的“SQLServer.txt”可能是包含有关如何配置和使用SQL Server驱动的信息,而“Mysql”、“2008”、“2005”和“2000”可能是分别对应不同数据库版本的驱动或配置文件。 在使用这些驱动时,开发人员需要...

    php链SQLServer2005/SQLServer2008

    标题 "php链SQLServer2005/SQLServer2008" 涉及到的是在PHP环境中连接和操作Microsoft SQL Server 2005或2008数据库的技术。这一主题涵盖了一系列的步骤和组件,包括安装、配置以及使用PHP的sqlsrv驱动程序。 首先...

    PHP安装连接SQLSERVER扩展方法

    ### PHP安装连接SQLSERVER扩展方法 #### 背景与目的 在开发基于Web的应用程序时,PHP(Hypertext Preprocessor)作为一种广泛使用的开源服务器端脚本语言,经常需要与各种数据库进行交互来实现数据存储和检索等...

    【亲测可用】PHP连接sql server

    SQL Server是Microsoft提供的一款关系型数据库管理系统,用于存储、管理和处理数据。将PHP与SQL Server结合,可以让开发者利用PHP的灵活性和易用性来操作SQL Server的强大数据库功能。 本文将详细介绍如何使用PHP...

    PHP连接SQLServer代码

    `SqlServer201`可能指的是SQL Server 2012或2014版本,这些版本都支持`sqlsrv`扩展。 在压缩包文件`PhpConnSqlServer`中,可能包含有上述的连接代码示例、探针脚本以及可能的详细教程,帮助开发者更好地理解和实现...

    php连接sqlserver2005及以上版本驱动下载

    标题“php连接sqlserver2005及以上版本驱动下载”指出,我们需要关注的是PHP与SQL Server 2005或更高版本的兼容性问题。PHP的原生mssql扩展仅适用于较旧的SQL Server版本,因此在更新的环境中,它将无法正常工作。...

    php连接sqlserver数据库驱动.rar

    "php连接sqlserver数据库驱动.rar"这个压缩包很可能是包含PHP连接SQL Server所需的驱动程序,如PDO_SQLSRV或sqlsrv。本文将详细解释如何使用PHP连接到SQL Server数据库,以及相关的关键知识点。 首先,你需要确保你...

    Thinkphp 连接 SQL SERVER 类

    然而,当涉及到与非MySQL数据库系统的交互,例如Microsoft SQL Server时,开发者可能会遇到一些挑战。本篇文章将详细探讨如何在ThinkPHP框架中配置和使用SQL Server数据库。 首先,`ThinkPHP 连接 SQL SERVER 类`指...

    SQLSRV30 PHP连接sql server2008 SQL Server Driver for PHP3.0

    SQLSRV30 PHP连接sql server2008 SQL Server Driver for PHP3.0 PHP自带的php_mssql.dll文件已经满足不了sql server2005及其以上版本的使用了。微软也随之发布了SQL Server Driver for PHP来做相应的支持。 其中...

    Netbeans连接SQL_server_详细方法

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); con = DriverManager.getConnection(url, user, pass); } catch (SQLException ex) { } catch (ClassNotFoundException ex) { System.out....

    SQLSRV20 Microsoft Drivers for PHP for SQL Server2.0

    PHP自带的php_mssql.dll文件已经满足不了sql server2005及其以上版本的使用了。微软也随之发布了SQL Server Driver for PHP来做相应的支持。 其中SQL Server Driver for PHP有两个版本支持不同的php版本。 1.SQL...

    php 连接Sqlserver扩展

    标题 "php 连接Sqlserver扩展" 描述的是在PHP编程环境中如何建立与Microsoft SQL Server数据库的连接。在PHP中,这种连接通常依赖于特定的扩展,如`sqlsrv`或`pdo_sqlsrv`。这两个扩展是专为PHP设计的,用于与SQL ...

    sqlserver2008驱动包下载

    4. **PHP SQLSRV驱动**:对于PHP开发者,SQLSRV是微软提供的一个扩展,使得PHP可以无缝连接到SQL Server 2008。此外,还有PDO_SQLSRV扩展,它是PHP Data Objects (PDO) 的实现,提供了一种统一的数据库访问接口。 5...

    PHP连接sqlserver数据库

    标题"PHP连接sqlserver数据库"所涉及的知识点主要包括以下几点: 1. **安装SQLSRV扩展**: - 首先,你需要确保已经下载了适用于你当前PHP版本(这里是PHP 5.6)的SQLSRV扩展。扩展通常有非线程安全(NTS)和线程...

    php连接sqlserver

    描述中提到“php连接mssql”,这里的“mssql”是Microsoft SQL Server的简称,暗示了PHP通过不同的SQL Server版本(2000、2005、2008和2012)进行连接的兼容性。 要实现PHP连接SQL Server,你需要以下关键知识点: ...

    PHP连接sqlserver ODBC

    标题 "PHP连接sqlserver ODBC" 涉及到的是在PHP编程环境中,通过ODBC(Open Database Connectivity)驱动来连接Microsoft SQL Server数据库的过程。ODBC是一个标准的应用程序编程接口(API),允许不同数据库系统...

    PHP5.3.29连接SQL2005/SQL2008 (XP系统 VC9)

    标题中的“PHP5.3.29连接SQL2005/SQL2008 (XP系统 VC9)”指的是在Windows XP系统上,使用基于Visual C++ 9编译器构建的PHP 5.3.29版本,来实现与Microsoft SQL Server 2005或2008数据库的连接。这一过程涉及到多个...

    Windows-7.4-PHP适配SQLserver驱动

    这两个扩展都是Microsoft提供的,专为PHP设计,用于连接到SQL Server数据库。在PHP 7.4中,这两个扩展都经过了优化,支持最新的特性和性能改进。 1. **pdo_sqlsrv**:这是一个PDO(PHP Data Objects)驱动,遵循PDO...

    基于Linux下PHP连接SQL Server方法

    FreeTDS 是一个开源的TDS(Tabular Data Stream)协议实现,可以用来访问微软SQL Server和其他兼容TDS协议的数据库。 ```bash cd /usr/local/src tar zxvf freetds-stable.tgz cd freetds-0.95/ ./configure --...

Global site tag (gtag.js) - Google Analytics