【发布时间】: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 在内的所有相关库的引用。