2012-04-12 23 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數組變量)