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中的串行化变量和序列化对象
Sep 05 PHP
一个好用的分页函数
Nov 16 PHP
PHP IPV6正则表达式验证代码
Feb 16 PHP
微博短链接算法php版本实现代码
Sep 15 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
Jun 28 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
php多任务程序实例解析
Jul 19 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
CI框架Session.php源码分析
Nov 03 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
Dec 16 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 curl 抓取AJAX异步内容示例
2014/09/09 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
Javascript基础教程之while语句
2015/01/18 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
Bootstrap精简教程
2015/11/27 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
[01:31]完美与DOTA2历程
2014/07/31 DOTA
从零学Python之hello world
2014/05/21 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
不要用强制方法杀掉python线程
2017/02/26 Python
python多维数组分位数的求取方式
2020/03/03 Python
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
小区停车场管理制度
2014/01/27 职场文书
优秀社区干部事迹材料
2014/02/03 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
植物生产学专业求职信
2014/08/08 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
2015年双拥工作总结
2015/04/08 职场文书
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
代码复现python目标检测yolo3详解预测
2022/05/06 Python
一文搞懂Java中的注解和反射
2022/06/21 Java/Android