Please note that, unlike equivalent functions in other DB extensions, skipping the resource argument is not synonym for "just get last error".
(PHP 5, PECL OCI8 >= 1.1.0)
oci_error — Returns the last error found
$resource
] )Returns the last error found.
The function should be called immediately after an error occurs. Errors are cleared by a successful statement.
resource
For most errors, resource
is the
resource handle that was passed to the failing function call.
For connection errors with oci_connect(),
oci_new_connect() or
oci_pconnect() do not pass resource
.
If no error is found, oci_error() returns
FALSE
. Otherwise, oci_error() returns the
error information as an associative array.
Array key | Type | Beskrivelser |
---|---|---|
code | integer | The Oracle error number. |
message | string | The Oracle error text. |
offset | integer | The byte position of an error in the SQL statement. If there was no statement, this is 0 |
sqltext | string | The SQL statement text. If there was no statement, this is an empty string. |
Version | Beskrivelser |
---|---|
4.3.0 | The offset and sqltext entries were added. |
Eksempel #1 Displaying the Oracle error message after a connection error
<?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);
}
?>
Eksempel #2 Displaying the Oracle error message after a parsing error
<?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);
}
?>
Eksempel #3 Displaying the Oracle error message, the problematic statement, and the position of the problem of an execution error
<?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";
}
?>
Note:
In PHP versions before 5.0.0 you must use ocierror() instead. The old function name can still be used in current versions, however it is deprecated and not recommended.
Please note that, unlike equivalent functions in other DB extensions, skipping the resource argument is not synonym for "just get last error".