(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_define_by_name — Сопоставляет переменную PHP столбцу результата запроса
Сопоставляет переменную PHP столбцу результата запроса, полученного с помощью oci_fetch().
Вызов oci_define_by_name() должен производиться до запуска oci_execute().
statement
Корректный идентификатор выражения OCI8, полученный из функции oci_parse() и исполненный функцией oci_execute(), или идентификатор выражения REF CURSOR
.
column
Имя столбца использованного в запросе.
Используйте верхний регистр для стандартных регистронезависимых имён столбцов Oracle. Используйте точное написание имени столбца для регистрозависимых имён.
var
Переменная PHP, предназначенная для хранения возвращённого значения.
type
Тип возвращаемых данных. Обычно не требуется. Имейте ввиду, что преобразования Oracle-данных не производятся. К примеру, SQLT_INT
будет проигнорировано и возвращённые данные будут по-прежнему в виде SQLT_CHR
.
Если вам нужно назначить переменную абстрактного типа данных (LOB/ROWID/BFILE), то её необходимо сначала создать с помощью oci_new_descriptor().
Возвращает true
в случае успешного выполнения или false
, если возникла ошибка.
Пример #1 Пример использования oci_define_by_name()
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$sql = 'SELECT location_id, city FROM locations WHERE location_id < 1200';
$stid = oci_parse($conn, $sql);
// Переменные ДОЛЖНЫ быть определены перед запуском
oci_define_by_name($stid, 'LOCATION_ID', $locid);
oci_define_by_name($stid, 'CITY', $city);
oci_execute($stid);
// Каждый результат запроса помещает в заранее определённую переменную следующую строку данных
while (oci_fetch($stid)) {
echo "ID местоположения $locid - $city<br>\n";
}
// Выведет:
// ID местоположения 1000 - Roma
// ID местоположения 1100 - Venice
oci_free_statement($stid);
oci_close($conn);
?>
Пример #2 Пример использования oci_define_by_name() с регистрозависимыми именами столбцов
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT * FROM mytab');
// Используется верхний регистр для регистронезависимых имён столбцов
oci_define_by_name($stid, 'ID', $id);
// Используется точное написание для регистрозависимых имён столбцов
oci_define_by_name($stid, 'MyDescription', $mydesc);
oci_execute($stid);
while (oci_fetch($stid)) {
echo "Идентификатор $id - $mydesc<br>\n";
}
// Выведет:
// Идентификатор 1 - Iced Coffee
oci_free_statement($stid);
oci_close($conn);
?>
Пример #3 Пример использования oci_define_by_name() со столбцами типа LOB
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT * FROM mytab');
// Переменные ДОЛЖНЫ быть определены перед запуском
oci_define_by_name($stid, 'ID', $id);
oci_define_by_name($stid, 'FRUIT', $fruit); // $fruit станет дескриптором LOB
oci_execute($stid);
while (oci_fetch($stid)) {
echo $id . " - " . $fruit->load(100) . "<br>\n";
}
// Выведет:
// 1 - apple
// 2 - orange
$fruit->free();
oci_free_statement($stid);
oci_close($conn);
?>
Пример #4 Пример использования oci_define_by_name() с приведёнными типами
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT * FROM mytab');
// Переменные ДОЛЖНЫ быть определены перед запуском
oci_define_by_name($stid, 'ID', $id);
$fruit = oci_new_descriptor($conn, OCI_D_LOB);
oci_define_by_name($stid, 'FRUIT', $fruit, OCI_D_CLOB);
oci_execute($stid);
while (oci_fetch($stid)) {
echo $id . " - " . $fruit->load(100) . "<br>\n";
}
// Выведет:
// 1 - apple
// 2 - orange
$fruit->free();
oci_free_statement($stid);
oci_close($conn);
?>