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
Для большинства ошибок параметром 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(); // Для обработки ошибок 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";
}
?>
Please note that, unlike equivalent functions in other DB extensions, skipping the resource argument is not synonym for "just get last error".