关于php连接mssql:pdo odbc sql server_php技巧

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

时间: 2024-10-25 06:21:08

关于php连接mssql:pdo odbc sql server_php技巧的相关文章

php如何连接sql server_php技巧

说明: 1:PHP5.2.x本身有个php_mssql.dll的扩展用来连接Sql server,但是这个dll只是用来连接低版本 Sql server的(2000以下版本),在Sql server 2005及以上版本无法使用mssql_connect连接到数据库. 2:php5.3.x不再支持php_mssql.dll 拓展库了,及时使用php5.2.x中的php_mssql.dll也无法使用. 微软专门为PHP出了个SQL Server的扩展(Windows版本的),对于Windows下使用

php使用pdo连接mssql server数据库实例_php技巧

本文实例讲述了利用php的pdo来连接微软的mssql server数据库的方法,分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: $dsn = 'mssql:dbname=bookStore_demo;host=192.168.1.106'; $user = 'sa'; $password = '123';     //mssql_connect('192.168.1.106','sa','123');     //echo 22; try {        // echo 11

php adodb连接mssql解决乱码问题_php技巧

周海汉/文ADO可以用 new COM("ADODB.Connection", NULL, CP_UTF8)//65001 这样的语句来实现正确转换.但ADO对php的支持缺乏文档.而有个开源的adodb,文档较为丰富. 其中对不同数据库驱动,设置UTF-8的方法还不一样,如下: 复制代码 代码如下: For all drivers 'persist', 'persistent', 'debug', 'fetchmode', 'new' Interbase/Firebird 'dial

pdo odbc 连接sql server实现

pdo odbc 连接sql server实现 最新的php教程 5.3.6中php_mssql.dll,php_pdo_mssql.dll都已经不见了. 只有一个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 =

使用SQL Server Driver for PHP解决PHP连接MSSQL乱码的问题

原文 使用SQL Server Driver for PHP解决PHP连接MSSQL乱码的问题 最近帮客户写了一个.net商城网站的发布接口,大家都知道.net一般都使用MSSQL数据库,但鱼丸不会.net呀,没办法,只能使用PHP连接SQL Server,然后来发布商品数据.因为客户采集的英文网站,但是要求发布时翻译成德语,发布完了,结果发现标题内容这些地方有乱码,在网上找了大半天,也试了很多种方法,结果使用SQLSRV解决了问题! 官方网址:http://msdn.microsoft.com

app-Android通过jtds连接mssql,如何判断是否连接成功和执行sql语句后是否为空,求大神指教

问题描述 Android通过jtds连接mssql,如何判断是否连接成功和执行sql语句后是否为空,求大神指教 连接实例已经学会啦,但app启动后只能等待超时来判断是否连接到mssql,可如果sql语句执行后为空记录的话也只能等连接超时才能知道,我不知道如何做这两项判断,麻烦知道的给我写下实例好吗? 解决方案 http://blog.sina.com.cn/s/blog_60b5e13e0101mlot.html 解决方案二: http://www.2cto.com/database/20141

php基于PDO连接MSSQL示例DEMO_php技巧

本文实例讲述了php基于PDO连接MSSQL的方法.分享给大家供大家参考,具体如下: <?php try { $hostname='117.79.93.222'; $port=1433;//端口 $dbname="csdn";//库名 $username="csdn_admin";//用户 $pw="123456";//密码 $dbh= new PDO("dblib:host=$hostname:$port;dbname=$dbn

php连接mssql的方法总结

  为了能让PHP连接MSSQL,系统需要安装MSSQL,PHP,且在PHP.ini中的配置中,将        ;extension=php_mssql.dll前面的;去掉         1.连接MSSQL        $conn=mssql_connect("实例名或者服务器IP","用户名","密码");         //测试连接        if($conn)        {        echo "连接成功&qu

php连接mssql数据库的几种方法_php实例

首先,php.ini文件中;extension=php_pdo_mssql.dll ;extension=php_pdo_odbc.dll 前面的分号去掉,对应的使哪种方式连接mssql.注意要重启服务使其生效. 一.建立连接 1.odbc 首先,在php程序所在的服务器设置odbc.这里32位和64位操作系统有区别.32位的从控制面板中管理工具中的数据源(odbc)直接建立就可以了,64位的要运行C:\Windows\SysWOW64\odbcad32.exe 从这里面设置.注意:上面只的是数