2012-04-12 69 views
2

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

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

下面是一个代码示例:

为的print_r($ ERR)
$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); 

响应:

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

回答

6

您是否尝试过通过$ STID到oci_error?

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

oci_error()函数带有一个参数,该参数指定错误的上下文。传递它没有参数将只适用于某些类型的连接错误。你想要做的就是通过解析的语句资源,就像这样:

$err = oci_error($stid); 

(还请注意,从oci_error返回值是一个数组,所以我分配到整个输出到您的$err数组变量)