Manuel PHP
Précédent |  | Suivant

# ociBindByName

(3.0.4 - 3.0.18 only, PHP 4 >= 4.0.0)

ociBindByName -- Utilise une variable PHP pour la phase de définition, dans un SELECT.

## Description

``int ocibindbyname` (resource stmt, string ph_name, mixed &variable, int length, int [type])`

ocibindbyname() relie la variable PHP `variable` à l'emplacement Oracle `ph_name`. Son utilisation (comme entrée ou comme sortie) sera définie à l'exécution, et l'espace nécessaire sera alloué. Le paramètre de longueur `length` fixe la taille maximum pour la liaison. Si vous affectez une longueur de -1, ocibindbyname() utilisera la longueur de variable comme maximum.

Si vous devez lier des types abstraits de données (LOB/ROWID/BFILE), vous devrez l'allouer dans un premier temps, avec ocinewdescriptor(). La longueur `length` ne sert pas pour ces types et devrait être fixée à -1. La variable `type` indique au serveur Oracle, quel type de pointeur va être utilisé. Les valeurs possibles sont : oci_B_FILE (Fichier binaires), oci_B_CFILE (Fichier texte), oci_B_CLOB (LOB- texte), oci_B_BLOB (LOB binaire) et oci_B_ROWID (ROWID).

Exemple 1. ociDefineByName
    <?php
    /* Exemple ociBindByPos par thies@thieso.net (980221)
      Insère 3 lignes dans emp, et utilise ROWID pour mettre à jour
      les lignes, juste après l'insertion.
    */
    $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);
    /* Effacement des lignes inutiles dans la table emp .... */
    $stmt = ociparse($conn,"delete from emp where empno in (1111,2222,3333)");
    ociexecute($stmt);
    ociFreeStatement($stmt);
    ociLogoff($conn);
    ?>

Précédent | Sommaire | Suivant
ociDefineByName | Niveau supérieur | ociLogon