ociBindByName

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)

 
;

 
?