获取oci_execute()错误消息(PHP)

时间:2012-04-12 18:31:58

标签: oracle oracle10g

如果Oracle 10g中的查询失败,我想获取特定的错误消息。对于MySQL,PHP具有mysql_error()函数,可以返回有关查询失败原因的详细信息。我查看了php.net手册中的oci_execute()函数,但从我看到它只在失败时返回false。

我尝试使用oc_error(),但我没有从中得到任何东西。

以下是代码示例:

    $err = array();
    $e = 0;

    //Cycle through all files and insert new records into database
    for($f=0; $f<sizeof($files); $f++)
    {
        $invoice_number = $files[$f]['invoice_number'];
        $sold_to = $files[$f]['sold_to'];
        $date = $files[$f]['date'];

        $sql = "insert into invoice (dealer_id, invoice_number, invoice_date) 
                values ('$sold_to', '$invoice_number', '$date')";

        $stid = oci_parse($conn, $sql);
        $result = oci_execute($stid);

        //If query fails
        if(!$result)
        {
            $err[$e] = oci_error();
            $e++;
        }
    } 

    print_r($err);

对print_r($ err)的回应:

Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => ) 

2 个答案:

答案 0 :(得分:7)

您是否尝试将$ stid传递给oci_error?

$err[$e] = oci_error($stid);

答案 1 :(得分:3)

oci_error()函数接受一个参数,指定错误的上下文。传递它没有参数只适用于某些类型的连接错误。你想要做的是传递解析的语句资源,如下所示:

$err = oci_error($stid);

(另请注意,oci_error的返回值是一个数组,因此我将整个输出分配给$err数组变量)