接上篇讲述如何在windows下配置PHP操作MS SQL SERVER。
Microsoft Drivers for PHP for SQL Server(点此下载)是微软官方出的,经过实际测试,这个方案是最完美的也是最简单的。
环境要求:
1.任何windows操作系统
2.PHP 5.2.4 , or later.
3.Microsoft SQL Server 2008 R2 Native Client(点此下载)
4.Any edition of SQL Server 2005 or later.
配置方法:
1.下载后,点击执行SQLSRV20.EXE解压缩到任意目录

2.如上图,选择对应版本的dll文件复制到PHP安装目录的EXT目录下(不知道php版本的,可以运行一下phpinfo函数查看)
3.修改php.ini,增加一条extension=你选择的dll,我选择的是php_sqlsrv_53_nts_vc9.dll,因此我的php.ini里增加的便是extension=php_sqlsrv_53_nts_vc9.dll
4.重启web服务器,大功告成。
具体的调用方法可以查看SQLSRV_Help.chm
经过实际使用,不管是一般的SQL语句还是存储过程,都能在PHP下得到很好的操作
windows下PHP自带的php_mssql.dll在配置的时候容易出现各种各样的错误。这里我要推荐另外一个扩展——php_dblib.dll
1.首先下载
http://docs.moodle.org/20/en/Installing_MSSQL_for_PHP#Using_FreeTDS_on_Windows
网站提供四个下载,分别是PHP 5.2.x (vc6) Thread Safe、 PHP 5.2.x (vc6) Non Thread Safe、PHP 5.3.x (vc9) Thread Safe、PHP 5.3.x (vc9) Non Thread Safe,找到符合自己要求的(phpinfo就能查到)下载
2.下载后解压缩,将php_dblib.dll复制到php环境的ext目录下
3.php.ini中增加一句extension=php_dblib.dll
4.重启web服务器(apache、iis、nginx等等)
- <?php
- $link = mssql_connect('localhost', 'db_user', 'db_password');
- if(!$link) {
- echo'Could not connect';
- die('Could not connect: ' . mssql_error());
- }
- echo'Successful connection';
- mssql_close($link);
- ?>
执行一下以上PHP代码——Successful connection,大功告成。
经测试,在windows2003和windows2008下,能很好的操作ms sql server 2005数据库。
补充:悲剧的是,在实际运行过程中,发现对存储过程支持的并不好。于是,又折腾了半天,找到了另外一个替代方案,下一篇文章再来讲这个替代方案。

今天在使用php进行cookie开发的时候发现,只能用最多10个数组元素,之后cookie值就乱了,查了查原因,原来是IE对cookie有限制.
名称 – 值对每个 Cookie 开头。 此对由零或详细属性 – 值对由分号分隔的后面。 对于一个域名, 每个 Cookie 仅限于 4,096 字节。 这个总数可存在作为一个名称 – 值对的 4 千字节 (KB) 或作为最多 20 名值 pairs 总该 4KB。 如果计算机没有足够空间来存储 Cookie, 丢弃该 Cookie。 则将不被截断。 Cookie 应用程序应使用尽可能少 Cookie 尽可能和作为小型作为尽可能。 此外, 应用程序应该能够处理一个 cookie 丢失。
如果 Web 应用程序使用多 19 自定义 Cookie, ASP 会话状态可能丢失。 Internet Explorer 4.0 和更高版本允许总共 20 Cookie 对于每个域。 浏览器因为如果使用 20 或更自定义 Cookie, ASPSessionID 是 Cookie, 将强制删除 ASPSessionID Cookie 和会话丢失。
来存储对于域, 20 多名称 – 值对由串联几对各个 Cookie 到 4,096 字节限制为该 Cookie 名称 – 值对创建一个 cookie 词典。 当前, 来检索这些值来自客户端脚本, 您必须分析 Cookie 手动。 但是, ActiveServerPages 请求 和 响应 对象包括内置功能使用 Cookie 词典作为词典对象。
在firefox下不存在这个问题.