PHP连接SQLSERVER 注意事项(附dll文件下载)


Posted in PHP onJune 28, 2012

环境:
- Apache 2.2.6
- PHP 5.2.5
- SQL Server 2005
- Windows XP SP2
步骤:
1. 首先按通常做法配置好PHP5连接MS SQL Server
2. 下载正确版本的 ntwdblib.dll (2000.80.194.0),注意这个版本号,不是这个版本的dll 不起作用啊,刚开始搞了好久才发现这个问题,切记。。。
地址: https://3water.com/dll/ntwdblib.dll.html
3. 覆盖 apache2.2.6\bin\ntwdblib.dll
4. 覆盖 php5.2.5\ntwdblib.dll
5. 运行 SQL Server 配置管理器:SQL Server Configuration Manager,打开协议 Protocols
6. 允许命名管道 "named pipes" 和 "tcp/ip"
7. 右键点击 "tcp/ip",打开属性 Properties 标签 "IP addresses"
8. 在 TCP 动态端口 "TCP Dynamic Ports" 填入 1433
9. 重启 SQL Server、Apache和PHP
使用以下方式连接MS SQL Server 2005:
mssql_connect('localhost,1433', USERNAME, PASSWORD);

配置php

1、打开php.in将extension=php_mssql.dll的注释符号去掉。
2、打开php.in将mssql.secure_connection = Off改为on。
3、将php_mssql.dll拷贝到php.in中extension_dir 指定的目录或者系统system32目录下。(php_mssql.dll在php压缩安装包中有)。
以上步骤完成后需要重启apache。
注意:实际使用中发现 如果通过php压缩文件手工安装php到iis下,必须重启机器而不仅仅是iis。
4、需要保证php或者系统系统system32下有ntwdblib.dll,查看属性确保其版本为8.00.194而不是7.0......
其他设置
如果php apache Sql Server2000都在同一台机器上,访问基本没有问题了。
如果Sql Server2000和php机器是分离的,需要确认ping sqlserver所在机器的机器名能通,如过不通,修改php所在机器的\system32\drivers\etc下的hosts文件,增加一行 sqlserver所在机器的机器ip sqlserver所在机器的机器名字。
如果还是无法访问,需要确认php所在的机器有无暗转mdac。要不索性安装一下sqlserver的客户端好了。
为了php连接sql2005 ,我在网络上找了一大堆资料在我的csdn博客中.晚上3:05分时候终于搞定了
php连接sql2005的问题,现在整合,同时把FAQ整合上.

我前面写的教程:

连接前配置系统:
1.检查文件 php5.2.5\ntwdblib.dll 默认下面有一个,不能连接再替换.
下载正确版本的 ntwdblib.dll (2000.80.194.0),地址: https://3water.com/dll/ntwdblib.dll.html
2.配置php
a、打开php.in将extension=php_mssql.dll的注释符号去掉。
b、打开php.in将mssql.secure_connection = Off改为on。
c、将php_mssql.dll拷贝到php.in中extension_dir 指定的目录或者系统system32目录下。(php_mssql.dll在php的压缩安装包中有)。
以上步骤完成后需要重启apache。
注意:实际使用中发现 如果通过php压缩文件手工安装php到iis下,必须重启机器而不仅仅是iis。
3.配置sqlserver
a. 运行 SQL Server 配置管理器:SQL Server Configuration Manager,打开协议 Protocols
b. 允许命名管道 "named pipes" 和 "tcp/ip"
c. 右键点击 "tcp/ip",打开属性 Properties 标签 "IP addresses"
d. 在 TCP 动态端口 "TCP Dynamic Ports" 填入 1433
e. 重启 SQL Server

4.使用以下方式连接MS SQL Server 2005:
代码如下:

//链接数据库 
$conn=mssql_connect('localhost','sa','123456'); 
mssql_select_db('gu_dde',$conn); 
//query语句 
$Query="select * from dde_top"; 
$AdminResult=mssql_query($Query); 
//输出结果 
$Num=mssql_num_rows($AdminResult); 
for($i=0;$i<$Num;$i++) 
{ 
$Row=mssql_fetch_array($AdminResult); 
echo($Row[1]); 
echo(""); 
} 
?>

输入http://127.0.0.1/

5.FAQ常见问题:
1报错:
Fatal error: Call to undefined function mssql_connect()
解决:
使用MSSQL_系列函数
要使用这两种都需要在php.ini进行设定:
(1)允许 DCOM,需要将php.ini中的 ;com.allow_dcom=TRUE前的分号";"去掉。
(2)使用MSSQL扩展,需要php.ini中的 ;extension=php_mssql.dll前的分号";"去掉。(关键)
(3)确认extension_dir为正确路径,以本机为例:extension_dir = "c:\AppServ5.2.6\php\ext"。
(4)如果仍然机器报错说找不到c:\AppServ5.2.6\php\ext\php_mssql.dll但明明存在这个文件。
解决方法:将php_mssql.dll,ntwdblib.dll拷贝到系统目录\system32下重启测试。。
(注:上面两个dll文件不在相同目录下,我的为c:\AppServ5.2.6\php\ext\php_mssql.dll;c:\AppServ5.2.6\php\ntwdblib.dll)
另外设置好了后记得重启服务器哦。
2.mssql_connect() Unable to connect to server
确认SQLServer2005服务器正常.检查 TCP/IP已经启用
同时右键查看属性:
已经启用是否选择是
确认服务器正确之后,再确认ntwdblib.dll 文件位置是否放到了 c:\windows\system32下
同时要保证ntwdblib.dll 这个文件的版本和sqlserver的版本对应:
下面是对应关系:
2.ntwdblib.dll 版本为 2000.2.8.0 是 对应 SqlServer2000(这个是网络查资料和猜测,没装2000)
2.ntwdblib.dll 版本为 2000.80.194.0 是 对应 SqlServer2005(这个是用实验证明可以用,本人就是用笔记本装了2005)
3.ntwdblib.dll 版本为 2000.80.2039 是 对应 SqlServer2008(这个是猜测没有装2008)
6.其他问题:
如果php apache Sql Server2000都在同一台机器上,访问基本没有问题了。
如果Sql Server2000和php机器是分离的,需要确认ping sqlserver所在机器的机器名能通,如过不通,修改php所在机器的\system32\drivers\etc下的hosts文件,增加一行 sqlserver所在机器的机器ip sqlserver所在机器的机器名字。
如果还是无法访问,需要确认php所在的机器有无暗转mdac。要不索性安装一下sqlserver的客户端好了。
解决问题如下:
1.下载两个文件 php_mssql.dll 和 ntwdblib.dll
php_mssql.dll 如果这个没有复制到c:\windows\system32下,就很容易出现
ntwdblib2093.dll 这个文件要注意版本,不然后面搞得很郁闷.
如果你的MSSQL数据库是2000的,基本上操作都是一样的。
新增一台win2003 server系统的服务器。以前其他的服务器上使用php5.0/5.1,数据库是SQL Server 2000;本次则打算安装SQL Server 2005,php5.3.2;据了解,php5.3版本使用微软的FastCGI模式,这种模式和传统的CGI模式相比采用了更加合理的解析进程启动模式,速度比CGI快2倍;在PHP5.3以上的版本已经对ISAPI模式不支持。

在已经安装iis6和ms sql server 2005后,整个安装过程是
1.安装FastCGI;
2.安装php5.3.2;
3.安装SQL Server Driver for PHP 1.1驱动;

PHP 相关文章推荐
同一空间绑定多个域名而实现访问不同页面的PHP代码
Dec 06 PHP
php项目打包方法
Feb 18 PHP
PHP目录函数实现创建、读取目录教程实例
Jan 13 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 PHP
Codeigniter(CI)框架分页函数及相关知识
Nov 03 PHP
THINKPHP项目开发中的日志记录实例分析
Dec 01 PHP
php实现多城市切换特效
Aug 09 PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 #PHP
php数组中删除元素的实现代码
Jun 22 #PHP
php数据结构与算法(PHP描述) 查找与二分法查找
Jun 21 #PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 #PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
Jun 21 #PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
Jun 17 #PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
Jun 17 #PHP
You might like
理解PHP中的stdClass类
2014/04/18 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
Node 升级到最新稳定版的方法分享
2018/05/17 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
python实现数字炸弹游戏
2020/07/17 Python
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
《都江堰》教学反思
2014/02/07 职场文书
2014年迎新年活动方案
2014/02/19 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
环保标语口号
2014/06/13 职场文书
房屋买卖委托书格式范本格式
2014/10/13 职场文书
美丽心灵观后感
2015/06/01 职场文书
信息技术课教学反思
2016/02/23 职场文书
导游词之日月潭
2019/11/05 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js
JavaScript实现简单的音乐播放器
2022/08/14 Javascript