使用php变量时oci_parse给出错误

时间:2013-08-11 13:45:38

标签: php oracle oracle11g

我正在尝试构建一个字符串,使用oci将数组传递给oracle。 如果我写字符串它工作正常,但如果我将它作为变量传递它会给出错误。

这很好用:

$c = oci_pconnect ( $config ['db'] ['username'], $config ['db'] ['password'], $config ['db'] ['hostspec'] );


        try {
$llamado = "DECLARE V_DNA_ARRAY M6_TEMP_DNA_TAB_TYPE:=M6_TEMP_DNA_TAB_TYPE();BEGIN V_DNA_ARRAY.extend(3); V_DNA_ARRAY(1) := O_M6_TEMP_DNA('91','92','93','94','95'); V_DNA_ARRAY(2) := O_M6_TEMP_DNA('96','97','98','99','910'); V_DNA_ARRAY(3) := O_M6_TEMP_DNA('911','912','913','914','915'); SINTRA.PKG_MEDULA.P_INSERT_TEMP_DNA ( V_DNA_ARRAY );END;";
            $s = oci_parse ( $c, $llamado );
            $r = oci_execute ( $s);


        } catch ( Exception $e ) {
            var_dump ( $r );
            var_dump ( $e->$d->getMessage () );
            die ( 'STOP' );
        }

但如果我这样做(因为价值观会改变),它会给我:

  

警告:oci_parse()期望参数1是资源,整数   在C:\ xampp \ htdocs \ cph_donante \ inside \ action \ gsilva \ insert.php中给出   第153行

     

警告:oci_execute()期望参数1为resource,给定null   在C:\ xampp \ htdocs \ cph_donante \ inside \ action \ gsilva \ insert.php上线   154

 $c = oci_pconnect ( $config ['db'] ['username'], $config ['db'] ['password'], $config ['db'] ['hostspec'] );


        try {

        $llamado = '"DECLARE V_DNA_ARRAY M6_TEMP_DNA_TAB_TYPE:=M6_TEMP_DNA_TAB_TYPE();BEGIN ';
$llamado .= 'V_DNA_ARRAY.extend('.count($c1).'); ';
foreach ($c1 as $c => $v){
$llamado .= 'V_DNA_ARRAY('.($c + 1).') := O_M6_TEMP_DNA('.$v.'); ';
}
$llamado .= 'SINTRA.PKG_MEDULA.P_INSERT_TEMP_DNA ( V_DNA_ARRAY );END;"';


            $s = oci_parse ( $c, $llamado );
            $r = oci_execute ( $s );


        } catch ( Exception $e ) {
            var_dump ( $r );
            var_dump ( $e->$d->getMessage () );
            die ( 'STOP' );
        }

你能告诉我它是如何运作的吗?

1 个答案:

答案 0 :(得分:0)

初看起来,你的冒号中你的冒号位于等号的错误一侧。

以下是oci_parse上的php doc的链接:oci_parse

此外,您可能需要查看oci_bind函数,以便在执行之前将变量绑定到您的语句。

在回答您想要了解其工作原理的问题时,我的最佳答案是阅读文档。 PHP文档编写得很好(imo),也有实现的例子。我会在那里看看它是如何工作的。