安装mysql odbc重启mssql_关于php连接mssql:pdo odbc sql server

关于php连接mssql:pdo odbc sql server

更新时间:2011年07月20日 00:39:33   作者:

研究了很久,终于发现:最新的php 5.3.6中php_mssql.dll,php_pdo_mssql.dll都已经不见了。

只有一个php_pdo_odbc.dll。

so~最新最好的php连接mssql方法应该是这样:

$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的问题终于解决了,虽然耗费大半天的时间,但收获还是很大的,现在把它贴出来,也让遇到同样问题的兄弟们少走一些弯路。

相关文章

1a1b05c64693fbf380aa1344a7812747.png

这篇文章主要介绍了php实现的微信分享到朋友圈并记录分享次数功能,结合实例形式分析了php微信分享功能接口调用及分享次数统计具体操作技巧,需要的朋友可以参考下2018-01-01

4f55910a645b073bc4fc65dc10dc14bd.png

如何写php程序?...2006-12-12

0ea3c7666119d5615e582f823fb3fad6.png

PHP是一种力量强大但相当容易学习的服务器端脚本语言,即使是经验不多的程序员也能够使用它来创建复杂的动态的web站点。然而,它在实现因特网服务的秘密和安全方面却常常存在许多困难2012-01-01

4f96a78db829b1556ff16de21e013c7a.png

本篇文章是对PHP的curl实现get,post和cookie的方法进行了详细的分析介绍,需要的朋友参考下2013-06-06

8cc1031babc6aff2319f1c6af8544aa0.png

这篇文章主要介绍了php采用curl模仿登录人人网发布动态的方法,分析了curl登陆人人网的原理与具体方法,非常具有实用价值,需要的朋友可以参考下2014-11-11

0c932a99bb7b6f23c937db507070cc7b.png

群友发的php牛逼的面试题,喜欢的朋友可以看看2013-01-01

cca732bf65a93ed2ec0ac80c638460fe.png

这篇文章主要介绍了PHP图片处理之使用imagecopy函数添加图片水印实例,本文给出了一个简单的入门级的自定义函数示例,需要的朋友可以参考下2014-11-11

2d9f31f2af7b675a3d153d2b7f1035a7.png

array_unshift() 函数在数组开头插入一个或多个元素。被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样2011-11-11

b452cee8ec5cd9e58ab98eba17281e59.png

这篇文章主要为大家详细介绍了php数组排序函数,2016-08-08

f4838ec7e2d4da28e0b57d4e852dadd4.png

这篇文章主要介绍了php实现的xml操作类,涉及PHP针对xml文件的创建、读取、节点操作等常用技巧,需要的朋友可以参考下2016-01-01

最新评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值