PHP Manual
Prev |  | Next

# OCINewDescriptor

OCINewDescriptor -- Initialize a new empty descriptor LOB/FILE (LOB is default)

## Description

`string OCINewDescriptor`(int connection, int [type]);

OCINewDescriptor() Allocates storage to hold descriptors or LOB locators. Valid values for the valid `type` are OCI_D_FILE, OCI_D_LOB, OCI_D_ROWID. For LOB desriptors, the methods load, save, and savefile are associated with the descriptor, for BFILE only the load method exists. See the second example usage hints.

Example 1. OCINewDescriptor
    <?php
        /* This script is designed to be called from a HTML form.
         * It expects $user, $password, $table, $where, and $commitsize
         * to be passed in from the form.  The script then deletes
         * the selected rows using the ROWID and commits after each
         * set of $commitsize rows. (Use with care, there is no rollback)
         */
        $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
        /* This script demonstrates file upload to LOB columns
         * The formfield used for this example looks like this
         * <form action="upload.php3" method="post" enctype="multipart/form-data">
         * <input type="file" name="lob_upload">
         * ...
         */
      if(!isset($lob_upload) || $lob_upload == 'none'){
    ?>
    <form action="upload.php3" 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 contains the temporary filename of the uploaded file
         $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);
         if($lob->savefile($lob_upload)){
            OCICommit($conn);
            echo "Blob successfully uploaded\n";
         }else{
            echo "Couldn't upload Blob\n";
         }
         OCIFreeDescriptor($lob);
         OCIFreeStatement($stmt);
         OCILogoff($conn);
      }
    ?>

Prev | Home | Next
OCIRollback | Up | OCIRowCount