2024 年 PHP Conference Japan

oci_error

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_error返回最後發生的錯誤

說明

oci_error(?資源 $connection_or_statement = null): 陣列|false

返回最後發生的錯誤。

此函數應在錯誤發生後立即調用。錯誤會在執行成功的語句後清除。

參數

connection_or_statement

對於大多數錯誤,connection_or_statement 是傳遞給失敗函數調用的資源句柄。對於使用 oci_connect()oci_new_connect()oci_pconnect() 的連線錯誤,應傳遞 null

返回值

如果未發現錯誤,oci_error() 會返回 false。否則,oci_error() 會以關聯陣列的形式返回錯誤資訊。

oci_error() 陣列說明
陣列鍵 類型 說明
code int (整數) Oracle 錯誤號。
message string (字串) Oracle 錯誤訊息文字。
offset int (整數) SQL 語句中錯誤的位元組位置。如果沒有語句,則為 0
sqltext string (字串) SQL 語句文字。如果沒有語句,則為空字串。

版本異動記錄

版本 說明
8.0.0, PECL OCI8 3.0.0 connection_or_statement 現在可以為 null。

範例

範例 #1 顯示連線錯誤後的 Oracle 錯誤訊息

<?php
$conn
= oci_connect("hr", "welcome", "localhost/XE");
if (!
$conn) {
$e = oci_error(); // 對於 oci_connect 錯誤,不傳遞句柄
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
?>

範例 #2 顯示剖析錯誤後的 Oracle 錯誤訊息

<?php
$stid
= oci_parse($conn, "select ' from dual"); // 注意引號不匹配
if (!$stid) {
$e = oci_error($conn); // 對於 oci_parse 錯誤,傳遞連線句柄
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
?>

範例 #3 顯示 Oracle 錯誤訊息、有問題的語句以及執行錯誤中問題的位置

<?php
$stid
= oci_parse($conn, "select does_not_exist from dual");
$r = oci_execute($stid);
if (!
$r) {
$e = oci_error($stid); // 針對 oci_execute 錯誤,請傳入敘述句柄
print htmlentities($e['message']);
print
"\n<pre>\n";
print
htmlentities($e['sqltext']);
printf("\n%".($e['offset']+1)."s", "^");
print
"\n</pre>\n";
}
?>

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top