PHP Zend_Db_Statement_DB2为静态字段返回null

时间:2013-05-01 21:31:07

标签: php sql db2 zend-db

我正在通过PHP API构建我的SQL语句,然后将其传递给连接到我们的数据库(DB2)的模块。

我的问题:当通过Zend_Db_Statement_DB2模块传递SQL时​​,静态字段(sales_type)返回null。直接在我们的AS400(命令行)上运行SQL,它可以正常工作。当我通过DB2模块传递相同的SQL时,所有行的“sales_type”字段都为null。

查询的简化版本:

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

预期/期望的结果与可疑的销售(在命令行上也返回了什么):

sales_type     sales
discount       12345
promotion       6789

SQL传递给DB2模块时返回的结果:

sales_type     sales
null           12345
null            6789

下面列出了用于执行选择查询的PHP代码:

    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 个答案:

答案 0 :(得分:1)

请参阅此链接发布在下方以获取解决方案。对于用户和运行查询的作业,需要将CCSID设置为37

PHP / SQL - Convert EBCDIC to ASCII