我的脑袋为什么下面的代码不能工作,需要一些新鲜的眼睛。已经在RazorSQL中测试过SQL查询,它返回值,但我不能让这个工作在PHP中。没有连接或声明错误。我想这与'i5_libl'有关,但还没有找到任何解决方法。有任何想法吗?通过PHP的DB2 SQL查询不返回结果
<?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)的引用的系统库列表。
我现在没有任何东西需要测试,但我相信通过设置DB2_I5_NAMING_ON,您必须使用'/'而不是'。'来限定文件。我会尝试禁用它来查看行为是否有任何改变。 –
@Bob这是[2012年改回](https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM%20i%20Technology%20Updates/page/System%使用技术更新(即团队PTF,如服务包)20%20%20%20%20%20%20%28%29%20%和%20%28%29%只要系统保持远程更新,这应该不是问题。 – WarrenT
我尝试切换DB2_I5_NAMING_ON和DB2_I5_NAMING_OFF,并对查询进行更正,但仍然没有任何结果。在我看来,这更多地与特定的图书馆(CLTDTA)有关。当我在CLTPAY上运行一个vanilla SELECT查询时,我得到了一个很好的结果。当我尝试在CLTDTA上的等价物时,我没有得到结果。用户使用包含对所有相关库(包括CLTDTA)的引用的系统库列表。 –