Manuel PHP

Précédent

 

Suivant

OCIBindByName

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

Description

int OCIBindByName(int 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 talille 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 les types et devrait être fixée à -1. La variable type indique au serveur Oracle, quel type de pointeur nous allons utiliser. 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
/* OCIBindByPos par example thies@digicol.de (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) ".
					   "valeurs (:empno,:ename) ".
					   "retourne ROWID dans: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);

/* Effacer nos exemples de 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

Chapitre

OCILogon

Hébergé
par