通过PHP的DB2 SQL Query不返回结果

时间:2015-05-10 16:42:26

标签: php db2-400

为什么下面的代码无法正常工作,我需要一些新鲜的眼睛。在RazorSQL中测试了SQL查询并返回值,但我无法在php中使用它。也没有任何联系或陈述错误。我猜这与“i5_libl'但还没有找到任何解决方法。有什么想法吗?

<?php

class employees
{
    private $employees = array();
    private $db_host = '*LOCAL';
    private $db_options = array(
        'i5_naming' => DB2_I5_NAMING_ON,
        'i5_libl' => 'CLTDTA CLTPAY'
    );

    public function getList() {
        $connection = db2_connect($this->db_host,$GLOBALS['db_user'],$GLOBALS['db_password'],$this->db_options);
        echo db2_conn_error();
        echo db2_conn_errormsg();
        $sql='SELECT F0101.ABAN8, F0101.ABALPH FROM F0101 INNER JOIN FP0102 ON F0101.ABAN8=FP0102.VEAN8 WHERE FP0102.VESTAT=\'\'';
        $stmt= db2_prepare($connection,$sql);
        echo db2_stmt_error();
        echo db2_stmt_errormsg();
        $result= db2_execute($stmt);
        while ($row = db2_fetch_assoc($stmt)) {
            echo $row['ABAN8']; 
        }
        db2_close($connection);
        return true;            
    }

}
?>

!!更新:

我尝试切换DB2_I5_NAMING_ON和DB2_I5_NAMING_OFF,并对查询进行了更正,但仍然没有。在我看来,这更多地与特定库(CLTDTA)有关。当我在CLTPAY上运行一个vanilla SELECT查询时,我得到的结果很好。当我在CLTDTA上尝试相同的时候,我得不到结果。用户使用系统库列表,其中包含对所有相关库(包括CLTDTA)的引用。

1 个答案:

答案 0 :(得分:0)

执行的每个步骤 回显 除了。在EXECUTE之后添加相同的请求,就像在CONNECT和PREPARE步骤之后完成一样。

如果仍然没有显而易见的话,打开调试消息传递功能[通过连接,通过启动服务作业(STRSRVJOB),然后在为连接提供服务的作业上启动调试(STRDBG),或使用QAQQINI功能]并查看作业日志为连接提供服务的工作。也许也可以开始详细的数据库监控;启动数据库监视器(STRDBMON)以验证传入的语句。如果那些仍然没有什么是显而易见的,那么也可以获得一个作业跟踪,然后从跟踪数据中验证[即有效的 debug 跟踪数据记录与执行FLOW记录],查询请求正在打开正确的\期望文件。