最近客户要求使用php+sqlserver2005 做系统因此依然使用了 php+adodb5 
不过发现了一个问题。不管怎么取 都只能取到第一条数据,后面几百条都不出现。首先 连数据库 正确 代码如下
$myDSN="PROVIDER=MSDASQL;DRIVER={SQL Server};SERVER={127.0.0.1};DATABASE=hdf;UID=sa;PWD=123;"; 
            if(self::$db!=null && self::$db->isConnected())
             return ;
             
             self::$db = NewADOConnection(PSConfig::$DBType);(这里使用的是ado_mssql)
            self::$db->debug = true;  
       self::$db->charPage = 65001;
     
              self::$db->Connect($myDSN); 
           
              self::$db->SetFetchMode(ADODB_FETCH_ASSOC);   
这里绝对正确 不用怀疑,接下来是 开始取表的数据 $result=self::$db->Execute("select * from city");
到这里 也正确但是我用var_dump($result);发现一个奇怪的现象, 只显示这张表的第一条数据。用 echo $result->RecordCount().'条';
可以抛出有437条 包括后来我开始遍历依然 只能遍历到 第一条
 while(!$result->EOF)
            {
                
                 $returnV[]=$result->fields;
      
               $result->MoveNext();
             
            }  请高手 帮助一下,是否哪里需要设置 还是adodb5本身的问题 
注意:如果切换成mysql数据库 同样的表 一切正常 
我的adodb的类库版本是  @version V5.14 8 

解决方案 »

  1.   

    不清楚,夜深人静你先睡觉。明天让老徐给你瞧瞧
    Mssql 屌丝用不起呀
      

  2.   

    一直很少使用 adodb 类,浏览了一下互联网,没有看到类似的 bug 报告
    只能是自己分析一下了
    1、按你的 dsn 写法,你采用的是 odbc 方式。可尝试用 mssql 方式做一下
    2、odbc 方式下的 sql server 2005 需安装名为 sql server 2005扩展 的补丁
    3、自 php5.3 以来,微软一直是不合作态度。所以使用 mssql 时 php 版本宜在 5.3 一下
    这样虽然会丢失 sql server 2005 新增的功能,但可保证正常运行
      

  3.   

    $rs = $DB->Execute("select * from table where key=123");
    while ($array = $rs->FetchRow()) {
        print_r($array);
    }