【问题标题】:DB2 SQL Query via PHP not returning results通过 PHP 的 DB2 SQL 查询不返回结果
【发布时间】:2015-05-10 16:42:25
【问题描述】:

对于为什么下面的代码不起作用,我需要一些新的眼光。已经在 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 上运行一个普通的 SELECT 查询时,我得到的结果很好。当我在 CLTDTA 上尝试等效项时,我没有得到结果。用户使用系统库列表,其中包含对包括 CLTDTA 在内的所有相关库的引用。

【问题讨论】:

  • 我现在没有要测试的东西,但我相信通过设置 DB2_I5_NAMING_ON,您必须使用“/”而不是“.”来限定文件。我会尝试禁用它以查看行为是否有任何变化。
  • @Bob 那是changed back in 2012 与技术更新(即组PTF,如服务包)。只要系统保持远程更新,这应该不是问题。
  • 我尝试切换 DB2_I5_NAMING_ON 和 DB2_I5_NAMING_OFF,对查询进行更正,但仍然没有。在我看来,这与特定库(CLTDTA)有关。当我只在 CLTPAY 上运行一个普通的 SELECT 查询时,我得到的结果很好。当我在 CLTDTA 上尝试等效项时,我没有得到结果。用户使用系统库列表,其中包含对包括 CLTDTA 在内的所有相关库的引用。

标签: php db2-400


【解决方案1】:

对于正在执行的每个步骤回显错误除了执行。在 EXECUTE 之后添加这些相同的请求,就像在 CONNECT 和 PREPARE 步骤之后完成的那样。

如果仍然没有明显的问题,请打开调试消息功能 [通过连接,通过启动服务作业 (STRSRVJOB),然后在服务连接的作业上启动调试 (STRDBG),或使用 QAQQINI 功能] 并查看作业日志为连接提供服务的作业。可能还不如开始详细的数据库监控;启动数据库监视器 (STRDBMON) 以验证传入语句。如果从这些中仍然没有明显的东西,那么还可以获取工作跟踪,然后从跟踪数据中进行验证 [i.e.有效的调试跟踪数据记录与执行流记录],查询请求正在打开正确\预期的文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-24
    • 2012-05-08
    • 2012-01-08
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多