Google

NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.73 ">

ociBindByName

(PHP 3>= 3.0.4, PHP 4 )

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);
?>