PHP连接SQL Server 2005

by 清泉 7. 十二月 2009 01:38

一环境配置:
  因为我自己机器是Windows 2003 + SQL Server 2005,所以我在使用的时候连接的是SQL Server 2005,后来发现基本功能两个版本区别不大,因为三方驱动都是微软提供的。需要说明的是,在PHP配置文件,即原生的php.ini里面需要修改一点东西,我没有尝试过去掉下边的注释是否可以访问0508的数据库:
;extension=php_mssql.dll
  我查阅了网上很多资料,这个PHP扩展是提供给SQL Server 2000用的,SQL Server 2005 SQL Server 2008需要到微软官方去下载新的驱动,下载地址如下:
http://www.microsoft.com/downloads/details.aspx?FamilyId=61BF87E0-D031-466B-B09A-6597C21A2E2A&displaylang=en

  官方文档有描述:
  In its continued commitment to interoperability, Microsoft has released an updated SQL Server Driver for PHP. The SQL Server Driver for PHP download is available to all SQL Server users at no additional charge. The SQL Server Driver for PHP is a PHP 5 extension that allows for the reading and writing of SQL Server data from within PHP scripts. The extension provides a procedural interface for accessing data in all editions of SQL Server 2005 and SQL Server 2008.
  根据官方文档的描述,微软提供的Driver是同时提供给SQL Server 2005SQL Server 2008两个版本使用的。所以整体的环境配置步骤如下:
1)下载驱动(上边有链接地址)下载过后的驱动包里面的内容如下图:

图例
2)拷贝驱动到相应的位置:
  在Windows操作系统上配置过PHP环境的人应该都清楚,配置的时候若需要配置一个PHP的扩展,此扩展需要将相关的dll文件全部复制到PHP的扩展目录里面,然后通过修改php.ini来实现PHP的扩展,在php.ini里面需要指明扩展路径,一般情况是在最末尾添加一行:
extension_dir=""
  ""内的内容填写PHP的扩展目录名,约定俗成一般是放在PHP目录下的一个ext文件夹内,当然可以将目录配置到任何地方(没有测试过)。把上图解压开的dll文件拷贝到extension_dir设置的扩展目录里面。
3)修改php.ini实现扩展:
  在php.ini的一大堆;extension=**.dll格式里面添加两行,此部分位于以下注释下边一般:
; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.
  添加的两行内容为:
extension=php_sqlsrv_ts.dll
extension=php_sqlsrv.dll
  注意=号右边是解开过后的扩展的两个驱动的文件名,必须保证此文件在配置好的扩展目录内,而且需要注意此处最初不需要带“;”。*:在php.ini文件里面,首部分号的含义代表行注释,如果有分号的时候,服务器在读取配置的时候会略过分号这一行不去读取相关内容,只有没有加分号的行才会被服务器读取。】
  这里解释一下,两个驱动程序的区别在于,php_sqlsrv_ts.dll是线程安全的驱动,如果服务器本身的环境是使用的php5ts.dll,就是用这个驱动;php_sqlsrv.dll不是线程 安全的,这种情况下,服务器运行PHP应该加载的是php5.dll

4)测试配置环境:
  整个过程操作好了过后,写一个test.php测试一下配置的相关环境,测试代码如下:
<?php
phpinfo();
?>

  若出现以下图片证明环境已经配置好了:

最终测试环境图  

  这里列举一下开发环境,以防出现不同环境有差异的地方:
OSWindows Server 2008 x64 Enterprise Edition
WebServerApache 2.2.11
DatabaseSQL Server 2008 x64 Enterprise Edition
PHP5.2.9
  (*:在配置PHP环境的时候,如果是解压缩的版本,在Windows平台上需要拷贝PHP根目录下所有的DLL文件到Windows的目录里面,需要说明的是:Windows 32位系统的目标目录为:$:\Windows\System32Windows 64位环境的目标目录为:$:\Windows\SysWOW64这里$符号代表安装操作系统的盘符号。而且本文的Driver好像运行的最低PHP版本应该为5.2.6,官方文档里面说的测试版本是使用的PHP5.2.6,至于低版本是否可以运行,我没有测试。)

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

  1.Windows Authentication连接部分代码段:
<?php
$serverName = "(local)";
$connectionInfo = array("Database"=>"TestingInfo","ConnectionPooling"=>false);
$conn = sqlsrv_connect( $serverName,$connectionInfo);
if( $conn == false)
{
echo "连接失败!";
die( print_r( sqlsrv_errors(), true));
}
?>
  2.SQL Server Authentication连接部分代码段:
<?php
$serverName = "(local)";
$uid = "sa";
$pwd = "******";
$connectionInfo = array("UID"=>$uid,"PWD"=>$pwd,"Database"=>"TestingInfo");
$conn = sqlsrv_connect( $serverName,$connectionInfo);
if( $conn == false)
{
echo "连接失败!";
die( print_r( sqlsrv_errors(), true));
}
?>

Tags:

PHP技术资料

评论

添加评论



(将显示你的Gravatar头像)  

biuquote
微笑得意调皮害羞酷大笑惊讶发呆喜欢可怜尴尬闭嘴噘嘴皱眉伤心抓狂呕吐坏笑漫骂发怒
Loading



Supidea.com 晨飞的梦 @ All Rights Reserved. Powered by BlogYi.NET ver:1.8.0.0. 苏ICP备09011404号

关于博主

kamau
抱着美好的理想背井离乡,这酸甜苦辣只能默默忍受。既然选择了路,就得风雨兼程……

Calendar

<<  九月 2010  >>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

在日历中查看文章

最近的评论

Comment RSS

声明

      本博所发一切破解相关附件只作学习研究交流之用,严禁用于商业用途,请在下载24小时内删除。
      本博所有网友评论不代表本博立场,版权归其作者所有。

© Copyright 2009