Дипломные работы, курсовые проекты на заказ, контрольные работы на заказ

 
Начертательная геометрия Практикум по решению задач Геометрическое черчение Инженерная графика ЕСКД Кратные интегралы Математический анализ Матрицы Пределы Производные Векторная алгебра Интегральное исчисление ТФКП Ядерная физика Электростатика Магнетизм Оптика Информационные технологии
Учебник РНР
Назад Вперёд

OCIBindByName

(PHP 3>= 3.0.4, PHP 4)

OCIBindByName - связывает PHP-переменную с Oracle Placeholder/заглушкой.

Описание

int OCIBindByName (int stmt, string ph_name, mixed & variable, int length [, int type])

OCIBindByName() связывает PHP-переменную variable с Oracle-заглушкой ph_name. Использование её для вывода или ввода определяется на этапе прогона, и выделяется необходимое пространство для хранения. Параметр length устанавливает максимальный размер связки. Если вы устанавливаете length в -1, OCIBindByName() будет использовать текущий размер переменной variable для установки максимального размера.

Если вам нужно связать абстрактный Datatype (LOB/ROWID/BFILE), вы должны сначала разместить его с использованием OCINewDescriptor().
length не используется для абстрактных типов данных/Datatypes и должен быть установлен в -1. Переменная type говорит Оracle, какой тип дескриптора мы хотим использовать. Возможные значения: OCI_B_FILE (Binary-File), OCI_B_CFILE (Character-File), OCI_B_CLOB (Character-LOB), OCI_B_BLOB (Binary-LOB) и OCI_B_ROWID (ROWID).

Пример 1. OCIDefineByName
<?php 
/* пример OCIBindByPos thies@thieso.net (980221) вставляются 3 записи в emp и 
используется ROWID для обновления записей сразу после вставки. */ $conn = OCILogon("scott","tiger"); 
$stmt = OCIParse($conn,"insert into emp (empno, ename) ". "values (:empno,:ename) 
". "returning ROWID into :rid"); $data = array(1111 => "Larry", 2222 => 
"Bill", 3333 => "Jim"); $rowid = OCINewDescriptor($conn,OCI_D_ROWID); OCIBindByName($stmt,":empno",&$empno,32); 
OCIBindByName($stmt,":ename",&$ename,32); OCIBindByName($stmt,":rid",&$rowid,-1,OCI_B_ROWID); 
$update = OCIParse($conn,"update emp set sal = :sal where ROWID = :rid"); OCIBindByName($update,":rid",&$rowid,-1,OCI_B_ROWID); 
OCIBindByName($update,":sal",&$sal,32); $sal = 10000; while (list($empno,$ename) 
= each($data)) { OCIExecute($stmt); OCIExecute($update); } $rowid->free(); 
OCIFreeStatement($update); OCIFreeStatement($stmt); $stmt = OCIParse($conn,"select 
* from emp where empno in (1111,2222,3333)"); OCIExecute($stmt); while (OCIFetchInto($stmt,&$arr,OCI_ASSOC)) 
{ var_dump($arr); } OCIFreeStatement($stmt); /* удаляет нашу "junk" из таблицы 
emp ... */ $stmt = OCIParse($conn,"delete from emp where empno in (1111,2222,3333)"); 
OCIExecute($stmt); OCIFreeStatement($stmt); OCILogoff($conn); ?>

Предупреждение!

Одновременное использование магических кавычек и OciBindByName() это плохая идея, так как закавычивание не нужно для закавыченных переменных, а любые кавычки, применённые магически, будут записаны в вашу базу данных, поскольку OciBindByName() не способна отличить магически добавленные кавычки от кавычек, добавленных преднамеренно.


НазадОглавление Вперёд
Функции Oracle 8ВверхOCICancel