(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_error — Возвращает последнюю ошибку
Описание
oci_error(?resource $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(); // Для обработки ошибок 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";
}
?>
alvaro at demogracia dot com ¶
8 years ago
Please note that, unlike equivalent functions in other DB extensions, skipping the resource argument is not synonym for "just get last error".
За последние 24 часа нас посетили 11374 программиста и 1113 роботов. Сейчас ищут 280 программистов …
oci_error
(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_error — Возвращает последнюю ошибку
Описание
array oci_error
([ resource $resource
] )
Функция должны вызваться сразу же после появления ошибки.
Ошибки очищаются при произведении правильного запроса.
Список параметров
-
resource
-
Для большинства ошибок параметром
resource
является
соответствующий идентификатор соединения или выражения. Для ошибок во время
выполнения функций oci_connect(),
oci_new_connect() и oci_pconnect()
параметрresource
указывать не следует.
Возвращаемые значения
Если ошибок не найдено, то oci_error() возвращает
FALSE
. В другом случае, oci_error() возвращает
информацию об ошибке в виде ассоциативного массива.
Ключ массива | Тип | Описание |
---|---|---|
code | integer | Номер ошибки Oracle. |
message | string | Текст ошибки Oracle. |
offset | integer |
Позиция ошибки в запросе SQL. Если нет запроса, то равна 0 |
sqltext | string | Текст запроса SQL. Если нет запроса, то строка пуста. |
Примеры
Пример #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";
}
?>
Вернуться к: OCI8 Функции
oci_error
(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_error — Возвращает последнюю ошибку
Описание
oci_error
([ resource $resource
] ) : array
Функция должна вызваться сразу же после появления ошибки.
Ошибки очищаются при произведении правильного запроса.
Список параметров
-
resource
-
Для большинства ошибок параметром
resource
является
соответствующий идентификатор соединения или выражения. Для ошибок во время
выполнения функций oci_connect(),
oci_new_connect() и oci_pconnect()
параметрresource
указывать не следует.
Возвращаемые значения
Если ошибок не найдено, то oci_error() возвращает
FALSE
. В противном случае, oci_error() возвращает
информацию об ошибке в виде ассоциативного массива.
Ключ массива | Тип | Описание |
---|---|---|
code | integer | Номер ошибки Oracle. |
message | string | Текст ошибки Oracle. |
offset | integer |
Позиция ошибки в запросе SQL. Если нет запроса, то равна 0 |
sqltext | string | Текст запроса SQL. Если нет запроса, то строка пуста. |
Примеры
Пример #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";
}
?>
PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0
oci_error — Returns the last error found
oci_error(
[resource|null$connection_or_statement = null] ): array|false
Returns the last error found.
The function should be called immediately after an error occurs.
Errors are cleared by a successful statement.
Parameters
- connection_or_statement
-
For most errors, connection_or_statement is the
resource handle that was passed to the failing function call.
For connection errors with oci_connect,
oci_new_connect or
oci_pconnect null should be passed.
Return Values
If no error is found, oci_error returns
false. Otherwise, oci_error returns the
error information as an associative array.
oci_error Array Description
Array key | Type | Description |
code | int | The Oracle error number. |
message | string | The Oracle error text. |
offset | int |
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. |
Changelog
Version | Description |
8.0.0, PECL OCI8 3.0.0 | connection_or_statement is now nullable. |
Example of oci_error
Show all examples
for oci_error
Содержание
- oci_error
- Описание
- Список параметров
- Возвращаемые значения
- Список изменений
- Примеры
- oci_execute — Выполняет подготовленное выражение
- Описание
- Список параметров
- Возвращаемые значения
- Примеры
- Примечания
- Смотрите также
- oci_error — Возвращает последнюю ошибку
- Описание
- Список параметров
- Возвращаемые значения
- Примеры
- oci_execute
- Description
- Parameters
- Return Values
- Examples
- Notes
- See Also
- User Contributed Notes 3 notes
oci_error
(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_error — Возвращает последнюю ошибку
Описание
Возвращает последнюю найденную ошибку.
Функция должна вызваться сразу же после появления ошибки. Ошибки очищаются при произведении правильного запроса.
Список параметров
Для большинства ошибок параметром 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 после ошибки соединения
Пример #2 Вывод сообщения об ошибке Oracle после ошибки разбора
Пример #3 Вывод сообщения об ошибке Oracle, ошибочного запроса и позиции ошибки запуска запроса
Источник
oci_execute — Выполняет подготовленное выражение
(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_execute — Выполняет подготовленное выражение
Описание
Выполняет подготовленное выражение statement , созданное с помощью функции oci_parse() .
Сразу после выполнения выражения подобного INSERT, по умолчанию все данные сразу будут сохранены в базе данных. Для выражений подобных SELECT, выполняется только логика запроса. Результат же запроса можно получить позже в PHP с помощью функций подобных oci_fetch_array() .
Каждое подготовленное выражение может быть выполнено несколько раз для экономии на издержках от повторной подготовки запроса. Это чаще всего применяется для выражений INSERT, когда к ним привязаны данные с помощью oci_bind_by_name() .
Список параметров
Правильное подготовленное выражение OCI.
Необязательный второй параметр с одним из следующих значений:
Режим выполнения
Константа | Описание |
---|---|
OCI_COMMIT_ON_SUCCESS | Автоматически сохранять все несохраненные изменения, произведенные за текущую сессию при успешном выполнении выражения. Этот режим установлен по умолчанию. |
OCI_DESCRIBE_ONLY | Делает доступными метаданные запроса для функций подобных oci_field_name() , но не создает результат выполнения выражения. Любое последующее получение данных, например с помощью oci_fetch_array() не будет произведено. |
OCI_NO_AUTO_COMMIT | Не сохранять автоматически изменения. Для PHP 5.3.2 (PECL OCI8 1.4) используйте OCI_DEFAULT , которая является эквивалентом для OCI_NO_AUTO_COMMIT . |
Использование режима OCI_NO_AUTO_COMMIT открывает или продолжает транзакцию. Эта транзакция автоматически откатывается при закрытии соединения или завершении скрипта. Используйте oci_commit() для завершения транзакции и oci_rollback() для ее отмены.
При вставке и обновлении данных рекомендуется использование транзакций для реляционной целостности данных и для улучшения производительности.
Если для какого-нибудь выражения используется режим OCI_NO_AUTO_COMMIT , и впоследствии не используются oci_commit() или oci_rollback() , то OCI8 будет выполнять откат при завершении скрипта даже если данные не были изменены. Для избежания ненужных откатов большинство скриптов не используют режим OCI_NO_AUTO_COMMIT для запросов или PL/SQL. Будьте внимательны, чтобы обеспечить надлежащую согласованность транзакций при использовании oci_execute() с различными режимами в одном скрипте.
Возвращаемые значения
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Примеры
Пример #1 oci_execute() при выполнении запросов
= oci_connect ( ‘hr’ , ‘welcome’ , ‘localhost/XE’ );
$stid = oci_parse ( $conn , ‘SELECT * FROM employees’ );
oci_execute ( $stid );
echo »
n» ;
n» ;
>
echo «
n» ;
>
echo «
» . ( $item !== null ? htmlentities ( $item , ENT_QUOTES ) : «» ) . «
while ( $row = oci_fetch_array ( $stid , OCI_ASSOC + OCI_RETURN_NULLS )) <echo » n» ; foreach ( $row as $item ) <echo »
n» ;
Пример #2 oci_execute() без указания определенного режима
// Перед выполнением создайте таблицу:
// CREATE TABLE MYTABLE (col1 NUMBER);
$conn = oci_connect ( ‘hr’ , ‘welcome’ , ‘localhost/XE’ );
$stid = oci_parse ( $conn , ‘INSERT INTO mytab (col1) VALUES (123)’ );
oci_execute ( $stid ); // Строка сохранена и становится видимой для других пользователей
Пример #3 oci_execute() с OCI_NO_AUTO_COMMIT
// Перед выполнением создайте таблицу:
// CREATE TABLE MYTABLE (col1 NUMBER);
$conn = oci_connect ( ‘hr’ , ‘welcome’ , ‘localhost/XE’ );
$stid = oci_parse ( $conn , ‘INSERT INTO mytab (col1) VALUES (:bv)’ );
oci_bind_by_name ( $stid , ‘:bv’ , $i , 10 );
for ( $i = 1 ; $i 5 ; ++ $i ) <
oci_execute ( $stid , OCI_NO_AUTO_COMMIT ); // use OCI_DEFAULT for PHP >
oci_commit ( $conn ); // сохранение все новых значений: 1, 2, 3, 4, 5
Пример #4 oci_execute() с различными режимами
// Перед выполнением создайте таблицу:
// CREATE TABLE MYTABLE (col1 NUMBER);
$conn = oci_connect ( ‘hr’ , ‘welcome’ , ‘localhost/XE’ );
$stid = oci_parse ( $conn , ‘INSERT INTO mytab (col1) VALUES (123)’ );
oci_execute ( $stid , OCI_NO_AUTO_COMMIT ); // data not committed
$stid = oci_parse ( $conn , ‘INSERT INTO mytab (col1) VALUES (456)’ );
oci_execute ( $stid ); // commits both 123 and 456 values
Пример #5 oci_execute() с OCI_DESCRIBE_ONLY
= oci_connect ( ‘hr’ , ‘welcome’ , ‘localhost/XE’ );
$stid = oci_parse ( $conn , ‘SELECT * FROM locations’ );
oci_execute ( $s , OCI_DESCRIBE_ONLY );
for ( $i = 1 ; $i oci_num_fields ( $stid ); ++ $i ) <
echo oci_field_name ( $stid , $i ) . «
n» ;
>
Примечания
Транзакции автоматически откатываются при закрытии соединения или завершении выполнения скрипта. Принудительно вызывайте oci_commit() для завершения транзакции.
Любой вызов oci_execute() , который принудительно использует OCI_COMMIT_ON_SUCCESS или по умолчанию будет завершать любую предыдущую незакрытую транзакцию.
Любое выражение Oracle DDL подобное CREATE или DROP будет автоматически завершать любу. незакрытую транзакцию.
Так как функция oci_execute() обычно отправляет выражения в базу данных, то oci_execute() может найти некоторые незначительные синтаксические ошибки, когда локальная oci_parse() их не находит.
Смотрите также
- oci_parse() — Подготавливает запрос к выполнению
Источник
oci_error — Возвращает последнюю ошибку
(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_error — Возвращает последнюю ошибку
Описание
Возвращает последнюю найденную ошибку.
Функция должны вызваться сразу же после появления ошибки. Ошибки очищаются при произведении правильного запроса.
Список параметров
Для большинства ошибок параметром resource является соответствующий идентификатор соединения или выражения. Для ошибок во время выполнения функций oci_connect() , oci_new_connect() и oci_pconnect() параметр resource указывать не следует.
Возвращаемые значения
Если ошибок не найдено, то oci_error() возвращает FALSE . В другом случае, oci_error() возвращает информацию об ошибке в виде ассоциативного массива.
Описание массива вывода oci_error()
Ключ массива | Тип | Описание |
---|---|---|
code | integer | Номер ошибки Oracle. |
message | string | Текст ошибки Oracle. |
offset | integer | Позиция ошибки в запросе SQL. Если нет запроса, то равна |
sqltext | string | Текст запроса SQL. Если нет запроса, то строка пуста. |
Примеры
Пример #1 Вывод сообщения об ошибке Oracle после ошибки соединения
Пример #2 Вывод сообщения об ошибке Oracle после ошибки разбора
Пример #3 Вывод сообщения об ошибке Oracle, ошибочного запроса и позиции ошибки запуска запроса
Источник
oci_execute
(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_execute — Executes a statement
Description
Executes a statement previously returned from oci_parse() .
After execution, statements like INSERT will have data committed to the database by default. For statements like SELECT , execution performs the logic of the query. Query results can subsequently be fetched in PHP with functions like oci_fetch_array() .
Each parsed statement may be executed multiple times, saving the cost of re-parsing. This is commonly used for INSERT statements when data is bound with oci_bind_by_name() .
Parameters
A valid OCI statement identifier.
An optional second parameter can be one of the following constants:
Execution Modes
Constant | Description |
---|---|
OCI_COMMIT_ON_SUCCESS | Automatically commit all outstanding changes for this connection when the statement has succeeded. This is the default. |
OCI_DESCRIBE_ONLY | Make query meta data available to functions like oci_field_name() but do not create a result set. Any subsequent fetch call such as oci_fetch_array() will fail. |
OCI_NO_AUTO_COMMIT | Do not automatically commit changes. Prior to PHP 5.3.2 (PECL OCI8 1.4) use OCI_DEFAULT which is equivalent to OCI_NO_AUTO_COMMIT . |
Using OCI_NO_AUTO_COMMIT mode starts or continues a transaction. Transactions are automatically rolled back when the connection is closed, or when the script ends. Explicitly call oci_commit() to commit a transaction, or oci_rollback() to abort it.
When inserting or updating data, using transactions is recommended for relational data consistency and for performance reasons.
If OCI_NO_AUTO_COMMIT mode is used for any statement including queries, and oci_commit() or oci_rollback() is not subsequently called, then OCI8 will perform a rollback at the end of the script even if no data was changed. To avoid an unnecessary rollback, many scripts do not use OCI_NO_AUTO_COMMIT mode for queries or PL/SQL. Be careful to ensure the appropriate transactional consistency for the application when using oci_execute() with different modes in the same script.
Return Values
Returns true on success or false on failure.
Examples
Example #1 oci_execute() for queries
= oci_connect ( ‘hr’ , ‘welcome’ , ‘localhost/XE’ );
$stid = oci_parse ( $conn , ‘SELECT * FROM employees’ );
oci_execute ( $stid );
echo »
n» ;
n» ;
>
echo «
n» ;
>
echo «
» . ( $item !== null ? htmlentities ( $item , ENT_QUOTES ) : » » ) . «
while ( $row = oci_fetch_array ( $stid , OCI_ASSOC + OCI_RETURN_NULLS )) <echo » n» ; foreach ( $row as $item ) <echo »
n» ;
Example #2 oci_execute() without specifying a mode example
// Before running, create the table:
// CREATE TABLE MYTABLE (col1 NUMBER);
$conn = oci_connect ( ‘hr’ , ‘welcome’ , ‘localhost/XE’ );
$stid = oci_parse ( $conn , ‘INSERT INTO mytab (col1) VALUES (123)’ );
oci_execute ( $stid ); // The row is committed and immediately visible to other users
Example #3 oci_execute() with OCI_NO_AUTO_COMMIT example
// Before running, create the table:
// CREATE TABLE MYTABLE (col1 NUMBER);
$conn = oci_connect ( ‘hr’ , ‘welcome’ , ‘localhost/XE’ );
$stid = oci_parse ( $conn , ‘INSERT INTO mytab (col1) VALUES (:bv)’ );
oci_bind_by_name ( $stid , ‘:bv’ , $i , 10 );
for ( $i = 1 ; $i 5 ; ++ $i ) <
oci_execute ( $stid , OCI_NO_AUTO_COMMIT ); // use OCI_DEFAULT for PHP >
oci_commit ( $conn ); // commits all new values: 1, 2, 3, 4, 5
Example #4 oci_execute() with different commit modes example
// Before running, create the table:
// CREATE TABLE MYTABLE (col1 NUMBER);
$conn = oci_connect ( ‘hr’ , ‘welcome’ , ‘localhost/XE’ );
$stid = oci_parse ( $conn , ‘INSERT INTO mytab (col1) VALUES (123)’ );
oci_execute ( $stid , OCI_NO_AUTO_COMMIT ); // data not committed
$stid = oci_parse ( $conn , ‘INSERT INTO mytab (col1) VALUES (456)’ );
oci_execute ( $stid ); // commits both 123 and 456 values
Example #5 oci_execute() with OCI_DESCRIBE_ONLY example
= oci_connect ( ‘hr’ , ‘welcome’ , ‘localhost/XE’ );
$stid = oci_parse ( $conn , ‘SELECT * FROM locations’ );
oci_execute ( $s , OCI_DESCRIBE_ONLY );
for ( $i = 1 ; $i oci_num_fields ( $stid ); ++ $i ) <
echo oci_field_name ( $stid , $i ) . «
n» ;
>
Notes
Transactions are automatically rolled back when connections are closed, or when the script ends, whichever is soonest. Explicitly call oci_commit() to commit a transaction.
Any call to oci_execute() that uses OCI_COMMIT_ON_SUCCESS mode explicitly or by default will commit any previous uncommitted transaction.
Any Oracle DDL statement such as CREATE or DROP will automatically commit any uncommitted transaction.
Because the oci_execute() function generally sends the statement to the database, oci_execute() can identify some statement syntax errors that the lightweight, local oci_parse() function does not.
See Also
- oci_parse() — Prepares an Oracle statement for execution
User Contributed Notes 3 notes
Notice (PHP 5.2.12-pl0-gentoo):
You can parse empty query, you can execute empty query (returns true), but you cannot fetch data from empty query. So, if you provide query as variable, make sure it isn’t empty.
= oci_parse ( $c , «» );
if( $q != false ) <
// parsing empty query != false
if( oci_execute ( $q ) <
// executing empty query != false
if( oci_fetch_all ( $q , $data , 0 , — 1 , OCI_FETCHSTATEMENT_BY_ROW ) == false ) <
// but fetching executed empty query results in error (ORA-24338: statement handle not executed)
$e = oci_error ( $q );
echo $e [ ‘message’ ];
>
>
else <
$e = oci_error ( $q );
echo $e [ ‘message’ ];
>
>
else <
$e = oci_error ( $link );
echo $e [ ‘message’ ];
>
?>
You can pass a «false» value to oci_execute() and this returns a null value, instead of the documented false value.
= oci_connect ( ‘username’ , ‘password, ‘ //hostname:1521/DB’);
$result = oci_execute ( false );
var_dump ( $result );
?>
Results in «null», so performing an Identical test:
if ( $results === false ) <
//throw exception
>
?>
won’t trap a problem, where as the Equal test (==) would:
if ( $results == false ) <
//throw exception
>
?>
So testing the result of a statement like oci_parse() is important!
Источник