关于php连接mssql:pdo odbc sql server


Posted in PHP onJuly 20, 2011

只有一个php_pdo_odbc.dll。
so~最新最好的php连接mssql方法应该是这样:

<?php 
$cnx = new PDO("odbc:Driver={SQL Server};Server=127.0.0.1;Database=test;",'sa','asd123'); 
var_dump($cnx); 
$a = $cnx->query("SELECT * FROM [user]"); 
var_dump($a); 
foreach ($a as $b) { 
var_dump($b); 
} 
?>

关于PHP无法连接MSSQL数据库的问题
今天配置了新服务器,配置是IIS+php,结果运行时发现php连接远程mssql数据库出错,出错代码如下:
Warning: mssql_connect(): Unable to connect to server:
想想以前都是没问题的,怎么回事呢?后来去网上搜索,发现一篇文章,才发现原来服务器是需要安装mssql才能用php连接mssql的,本来新服务器上我是不需要用到mssql的,但是现在没办法了,只能把它装上了,安装了mssql之后就没问题了。
我在想,如果是在linux上面的apache+php会怎样呢,不可能需要安装mssql吧,呵呵,晕了。
下面是找到的一篇文章。
php配置:
在php.ini文件里设置如下,找到
;extension=php_mssql.dll 把前面的分号去掉
找到extension_dir = d:\extension\
你的php.ini里面可能不是d:\extension\
改成在php安装目录下面的extensions目录下面的php_mssql.dll,所在的路径,如果你没有把它移动到其他地方(假设你的php安装路径是d:\php)
就改成extension_dir=d:\php\extensions\
然后重新启动web服务器

这一点很容易做到,但是做完这样的设置后还是连不上,错误的信息如下:
MS SQL Server 数据库连接错误!请检查数据库主机变量设置是否正确!!!
而主机的变量设置我是一遍一遍的检查,那些设置是一点问题都没有的,翻遍网页,找到了下面的这点蛛丝马迹:

php.com资料:
I am trying to connect to SQL Server 2000 from PHP
I bumped to following warning:
Warning: mssql_connect(): Unable to connect to server: SERVER\Portal
....... on line 5
on line 5 there is:
$db_connect = mssql_connect('SERVER\Portal', 'sa', 'my_passwd');
I did the following
1.enabled php_mssql.dll extension in PHP.ini
2.every dll is in proper place(System32 or PHP folder),including ntwdblib.dll
I search lots of profile throught web ,but no one give me proper answer to resolve it.
after a few hour ,I found the problem was caused by
ntwdblib.dll ,which version is 7.00.839 ,when I replaced old ntwdblib.dll with the new
ntwdblib.dll ,which version is 8.00.194 ,all problem are solved.
We had some, read A LOT, of problems with MSSQL under Windows 2003.
We had 2 the same windows, php, php-ini, everything machines but only one could connect.
Unable to connect was the error message.
Finnaly we checked the version of ntwdblib.dll and the one distributed with PHP was 7.00....
and the version of the one on the SQL Server install was 8.00.... so we copied this one in
the php and apache dir and it worked.
问题就这样被找到了,惹祸的是它 ntwdblib.dll
ntwdblib.dll的主要作用是提供sql server连接服务。
我用的php版本是4.3.9,在安装它的服器的 windows/system32/ 下我查到ntwdblib.dll文件的版本是2000.2.8.0 ,这个版本支持的是sql server 7.0, 因为安装PHP时会把dlls下面的所有文件覆盖到系统
目录下,所以当我用它去连接 sql server 2000 的时候当然会是无法连接了。
后来我在一台正常安装sql server 2000 的服务器上查到 ntwdblib.dll的版本是 2000.80.2039.0,我把这个文件拷过去,覆盖掉以前的版本,重启服务器后,一切正常。
补充:如果数据库名的开头是数字时也会提示无法打开,这时要做的很简单,把数据库的名字用中括号 [ ]
括起来就搞定了,如 123bbs 改写成 [123bbs]就没有问题了,另外如果你的数据库名字与sql server中的保留字冲突的话也会出现这种情况,用中括号的方法一样可以解决。
最终,PHP无法正确连接sql server 2000的问题终于解决了,虽然耗费大半天的时间,但收获还是很大的,现在把它贴出来,也让遇到同样问题的兄弟们少走一些弯路。

PHP 相关文章推荐
PHP中for循环语句的几种变型
Nov 26 PHP
Discuz 5.0 中读取纯真IP数据库函数分析
Mar 16 PHP
php 攻击方法之谈php+mysql注射语句构造
Oct 30 PHP
php中使用$_REQUEST需要注意的一个问题
May 02 PHP
php session_start()出错原因分析及解决方法
Oct 28 PHP
一组PHP加密解密函数分享
Jun 05 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 PHP
php抛出异常与捕捉特定类型的异常详解
Oct 26 PHP
PHP实现登录注册之BootStrap表单功能
Sep 03 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
Sep 02 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 PHP
PHP mcrypt可逆加密算法分析
Jul 19 #PHP
PHP中date()日期函数有关参数整理
Jul 19 #PHP
php URL验证正则表达式
Jul 19 #PHP
PHP中static关键字原理的学习研究分析
Jul 18 #PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
Jul 18 #PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
Jul 18 #PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 #PHP
You might like
用PHP提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
php curl模拟post请求小实例
2013/11/13 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
js面向对象编程总结
2017/02/16 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
Python Socket编程入门教程
2014/07/11 Python
django之常用命令详解
2016/06/30 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
谈谈python垃圾回收机制
2020/09/27 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
一套比较完整的软件测试人员面试题
2012/05/13 面试题
软件缺陷的分类都有哪些
2014/08/22 面试题
应届大学生自荐信格式
2013/09/21 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
高中生职业规划范文
2014/03/09 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
关于安全的演讲稿
2014/05/09 职场文书
学校班班通实施方案
2014/06/11 职场文书
个人工作总结范文2014
2014/11/07 职场文书
员工考勤管理制度
2015/08/06 职场文书
JavaScript canvas实现流星特效
2021/05/20 Javascript