2013-05-01 38 views
2

我通過PHP API構建SQL語句,然後通過連接到我們的數據庫(DB2)的模塊傳遞它。PHP Zend_Db_Statement_DB2爲靜態字段返回空值

我的問題:a 靜態字段(sales_type)在通過Zend_Db_Statement_DB2模塊傳遞SQL時​​返回null。直接在我們的AS400(命令行)上運行SQL,它可以正常工作。當我通過DB2模塊傳遞相同的SQL時,所有行的「sales_type」字段爲空。

查詢的簡化版本:

SELECT 'discount' "sales_type", sum(sales_type1) "sales" FROM salesTable 
UNION 
SELECT 'promotion' "sales_type", sum(sales_type2) "sales" FROM salesTable 

預期/期望的結果與fictiscious銷售(什麼也命令行返回):當SQL通過DB2模塊通過

sales_type  sales 
discount  12345 
promotion  6789 

返回的結果:

sales_type  sales 
null   12345 
null   6789 

用於執行的PHP代碼sele CT查詢列表如下:

public static function ExecuteSelect($sql) 
{ 
    $adapter = new Zend_Db_Adapter_Db2(Zend_Registry::get('config')->resources->multidb->as400) 

    //Prepare the SQL Statement 
    $sqlStmt = new Zend_Db_Statement_DB2($adapter, $sql); 

    $sqlStmt->execute(); 
    $rows = $sqlStmt->fetchAll(); 

    return $rows; 
} 

誰能給我更多的有識之士爲這個問題的原因,以及如何解決它?此外,我不想尋找一個後處理php的解決方法。提前致謝!

回答

1

請參閱此鏈接張貼在下面爲解決方案。該CCSID需要被設置爲37的用戶和工作運行查詢

PHP/SQL - Convert EBCDIC to ASCII

+0

完美,謝謝! – ejc 2013-05-02 20:02:51

+0

任何時候都沒問題! – adam 2013-05-02 20:03:38