Функции Язык программирования PHP

OCINewDescriptor

(PHP 3>= 3.0.7, PHP 4)

OCINewDescriptor - инициализирует новый пустой LOB или FILE-дескриптор.

Описание

string OCINewDescriptor (int connection [, int type])

OCINewDescriptor() выделяет место для хранения дескрипторов или LOB-локаторов. Правильными значениями для type являются OCI_D_FILE, OCI_D_LOB, OCI_D_ROWID. Для LOB-дескрипторов методы load, save и savefile ассоциированы с этим дескриптором, для BFILE имеется только метод load. См. примечания по использованию во втором примере.

Пример 1. OCINewDescriptor
<?php 
/* Это скрипт разработан для вызова из HTML-формы. * Он ожидает, что ему будут 
переданы из формы $user, $password, $table, $where * и $commitsize. Затем скрипт 
удаляет выбранные ряды * с использованием ROWID и подтверждает после каждой установки 
* $commitsize-рядов. (Используйте осторожно, отката нет) */ $conn = OCILogon($user, 
$password); $stmt = OCIParse($conn,"select rowid from $table $where"); $rowid 
= OCINewDescriptor($conn,OCI_D_ROWID); OCIDefineByName($stmt,"ROWID",&$rowid); 
OCIExecute($stmt); while ( OCIFetch($stmt) ) { $nrows = OCIRowCount($stmt); $delete 
= OCIParse($conn,"delete from $table where ROWID = :rid"); OCIBindByName($delete,":rid",&$rowid,-1,OCI_B_ROWID); 
OCIExecute($delete); print "$nrows\n"; if ( ($nrows % $commitsize) == 0 ) { OCICommit($conn); 
} } $nrows = OCIRowCount($stmt); print "$nrows deleted...\n"; OCIFreeStatement($stmt); 
OCILogoff($conn); ?>
<?php 
/* Этот скрипт демонстрирует загрузку файлов в LOB-столбцы * Поле формы для этого 
примера выглядит так: * <form action="upload.php" method="post" enctype="multipart/form-data"> 
* <input type="file" name="lob_upload"> * ... */ if(!isset($lob_upload) 
|| $lob_upload == 'none'){ ?> <form action="upload.php" method="post" 
enctype="multipart/form-data"> Upload file: <input type="file" name="lob_upload"><br> 
<input type="submit" value="Upload"> - <input type="reset"> </form> 
<?php } else { // $lob_upload содержит временное имя загружаемого файла. // 
См. также раздел возможностей загрузки файлов, // если вам нужно использовать 
безопасную загрузку. $conn = OCILogon($user, $password); $lob = OCINewDescriptor($conn, 
OCI_D_LOB); $stmt = OCIParse($conn,"insert into $table (id, the_blob) values(my_seq.NEXTVAL, 
EMPTY_BLOB()) returning the_blob into :the_blob"); OCIBindByName($stmt, ':the_blob', 
&$lob, -1, OCI_B_BLOB); OCIExecute($stmt, OCI_DEFAULT); if($lob->savefile($lob_upload)){ 
OCICommit($conn); echo "Blob successfully uploaded\n"; }else{ echo "Couldn't upload 
Blob\n"; } OCIFreeDesc($lob); OCIFreeStatement($stmt); OCILogoff($conn); } ?>
Пример 2. OCINewDescriptor
<?php 
/* Вызывается хранимые процедуры PL/SQL, содержащие clobs в качестве * параметров 
ввода (PHP 4 >= 4.0.6). * Пример подписи хранимой процедуры PL/SQL выглядит 
так: * * PROCEDURE save_data * Имя аргумента Тип In/Out Default? * ------------------------------ 
----------------------- ------ -------- * KEY NUMBER(38) IN * DATA CLOB IN * */ 
$conn = OCILogon($user, $password); $stmt = OCIParse($conn, "begin save_data(:key, 
:data); end;"); $clob = OCINewDescriptor($conn, OCI_D_LOB); OCIBindByName($stmt, 
':key', $key); OCIBindByName($stmt, ':data', $clob, -1, OCI_B_CLOB); $clob->WriteTemporary($data); 
OCIExecute($stmt, OCI_DEFAULT); OCICommit($conn); $clob->close(); $clob->free(); 
OCIFreeStatement($stmt); ?>

Назад Оглавление Вперёд
OCINewCursor Вверх OCINLogon

Глава 54. Переход от PHP 2 к PHP 3

PHP имеет уже долгую историю развития: легендарный PHP 1.0, PHP/FI, PHP 3.0 и PHP 4.0.

1. Переход от PHP 2 к PHP 3.

1. Переход от PHP 2 к PHP 3.

PHP/FI 2.0 больше не поддерживается. См. соответствующий раздел учебника о переходе от PHP/FI 2.0.

Если вы всё ещё работаете в PHP 2, мы настоятельно рекомендуем перейти сразу к PHP 4.