Please note that, unlike equivalent functions in other DB extensions, skipping the resource argument is not synonym for "just get last error".
(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_error — 返回最后发现的错误
$connection_or_statement
= null
): array|false返回最后发现的错误。
发生错误后应立即调用该函数。错误会由成功的语句清除。
connection_or_statement
对于大多数错误,connection_or_statement
是传递给失败函数以供调用的资源句柄。对于
oci_connect()、oci_new_connect() 或 oci_pconnect()
的连接错误,应传递 null
。
如果没有发现错误,oci_error() 返回 false
。否则,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(); // For oci_connect errors do not pass a handle
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
?>
示例 #2 语法解析错误后显示 Oracle 错误消息
<?php
$stid = oci_parse($conn, "select ' from dual"); // note mismatched quote
if (!$stid) {
$e = oci_error($conn); // For oci_parse errors pass the connection handle
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); // For oci_execute errors pass the statement handle
print htmlentities($e['message']);
print "\n<pre>\n";
print htmlentities($e['sqltext']);
printf("\n%".($e['offset']+1)."s", "^");
print "\n</pre>\n";
}
?>
Please note that, unlike equivalent functions in other DB extensions, skipping the resource argument is not synonym for "just get last error".