oci_parse 在使用 php 变量时给出错误

Posted

技术标签:

【中文标题】oci_parse 在使用 php 变量时给出错误【英文标题】:oci_parse giving error when using php variable 【发布时间】:2013-08-11 13:45:38 【问题描述】:

我正在尝试构建一个字符串以使用 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 是资源,给定 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】:

乍一看,您的冒号似乎在等号的错误一侧。

这里是 oci_parse 上 php 文档的链接:oci_parse

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

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

【讨论】:

以上是关于oci_parse 在使用 php 变量时给出错误的主要内容,如果未能解决你的问题,请参考以下文章

ORA-01036;非法变量名称/编号

当文件有 %20 时,文件下载给出错误。 (PHP)

PHP使用for或语句给出错误

使用 php laravel 文本到音频给出错误

Oracle 在提示刷新时给出错误消息

XDebug 断点在 Visual Studio Code 中给出 PHP 错误