2

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

我的问题:通过 Zend_Db_Statement_DB2 模块传递 SQL 时,静态字段(sales_type) 返回 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

虚构销售的预期/期望结果(在命令行上也返回):

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 解决方法。提前致谢!

4

1 回答 1

1

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

PHP / SQL - 将 EBCDIC 转换为 ASCII

于 2013-05-02T19:52:52.367 回答