为什么下面的代码无法正常工作,我需要一些新鲜的眼睛。在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)的引用。
答案 0 :(得分:0)
执行的每个步骤 回显 除了。在EXECUTE之后添加相同的请求,就像在CONNECT和PREPARE步骤之后完成一样。
如果仍然没有显而易见的话,打开调试消息传递功能[通过连接,通过启动服务作业(STRSRVJOB),然后在为连接提供服务的作业上启动调试(STRDBG),或使用QAQQINI功能]并查看作业日志为连接提供服务的工作。也许也可以开始详细的数据库监控;启动数据库监视器(STRDBMON)以验证传入的语句。如果那些仍然没有什么是显而易见的,那么也可以获得一个作业跟踪,然后从跟踪数据中验证[即有效的 debug 跟踪数据记录与执行FLOW记录],查询请求正在打开正确的\期望文件。