PHP7 oci8 扩展调用 oracle 存储过程获取不到数据结果

数据方提供了5个存储过程函数,其中1个入参的过程都可以调用成功并拿到数据,多个入参的过程调用的时候不能拿到数据,未捕获到任何异常,在使用fetch_all函数获取结果时可以拿到字段名称集合,但是拿不到数据结果值。用pl\sql工具查询是可以获取到游标数据结果集合的,用代码调用查询不到数据,首先参数值都是一致的。还请高手指点可能是哪里导致的再进行排查。

终于解决了 :

由于oci_bind_by_name 函数第三个参数使用是引用存储,相当于我在循环中绑定的参数值存到了同一个位置,最后在使用的时候参数值被修改了。下方是我原先的循环使用方式。
$bind_arr = [
    'param1'=>'value1',
    'param2'=>'value2',
];
foreach ($bind_arr as $key => $val) {
     oci_bind_by_name($parse, $key, $val);
}
改成&引用使用$val 或者使用文档中的这种也可以
$bind_arr = [
    'param1'=>'value1',
    'param2'=>'value2',
];
foreach ($bind_arr as $key => &$val) {
     oci_bind_by_name($parse, $key, $val);
}

终于找到原因了

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!