Php PDO Firebird选择总和返回错误结果

时间:2016-08-31 09:15:09

标签: php select pdo sum firebird

我有一个查询firebird 2.5数据库以返回列总和的函数。

如果我在查询管理器中执行此选择一切正常,但PHP代码的总和结果是错误的。

例如,查询管理器的结果值是1.205,55,php代码的结果值是699.785.495,12。

年份列的值是正确的,返回的行是正确的。

这是代码

     $db = getDB();
     $rows = array();

    $sth = $db->prepare("select Sum(D.total) as TOT, D.YEAR from DOCUMENTS D
                          where D.CUST = :custid 
                          GROUP BY D.YEAR ");  


    $custid = $request->getAttribute('custid');
    $sth->bindParam(':custid', $custid, PDO::PARAM_INT); 
    $sth->execute();
    $count = 0;

     while ($row = $sth->fetch (PDO::FETCH_OBJ)) {

     $totval = array( 
                   'year' =>  $row->YEAR,  
                   'total ' => number_format($row->TOT, 2, ',', '.')
                    ); 


        array_push($rows, $totval);   
        $count++;
        }

我认为错误可能与firebird的dll有关,但php版本是最近的(5.6.23)并且firebird dll正确加载而没有任何错误消息。

我做了很多测试,但我无法修复它。

提前致谢!

更新01/09/16 只有“NUMERIC”类型的列才会出现此问题;使用“COMPUTED BY”列不会发生错误。

已解决02/09/16 我已经将组件更改为从PDO_FIREBIRDFirebird/InterBase Functions管理firebird数据库,一切正常。从NUMERIC列的查询返回的值是正确的。可能PDO_firebird使用方言1访问数据库,因为这是解决PDO_firebird的旧问题。

0 个答案:

没有答案