Вы не зарегистрированы? Нажмите здесь для регистрации.
Забыли пароль? Запросите новый здесь.
|
Вы должны авторизироваться, чтобы добавить сообщение.
|
|
|
Последние активные темы форума |
|
ocibindbyname
(PHP 3>= 3.0.4, PHP 4 , PHP 5) ocibindbyname --
Bind a PHP variable to an Oracle Placeholder
Descriptionbool ocibindbyname ( resource stmt, string ph_name, mixed &variable [, int maxlength [, int type]] ) ocibindbyname() binds the PHP variable
variable to the Oracle placeholder
ph_name. Whether it will be used for
input or output will be determined run-time, and the necessary
storage space will be allocated. The
length parameter sets the maximum length
for the bind. If you set length to -1
ocibindbyname() will use the current length of
variable to set the maximum length.
If you need to bind an abstract Datatype (LOB/ROWID/BFILE) you
need to allocate it first using
ocinewdescriptor() function. The
length is not used for abstract Datatypes
and should be set to -1. The type variable
tells oracle, what kind of descriptor we want to use. Possible
values are: OCI_B_FILE (Binary-File), OCI_B_CFILE
(Character-File), OCI_B_CLOB (Character-LOB), OCI_B_BLOB
(Binary-LOB) and OCI_B_ROWID (ROWID).
Пример 1. ocibindbyname() example
<?php
/* OCIBindByPos example thies at thieso dot net (980221)
inserts 3 records into emp, and uses the ROWID for updating the
records just after the insert.
*/
$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
);
/* delete our "junk" from the emp table.... */
$stmt
=
OCIParse
(
$conn
,
"delete from emp where empno in (1111,2222,3333)"
);
OCIExecute
(
$stmt
);
OCIFreeStatement
(
$stmt
);
OCILogoff
(
$conn
);
?>
|
|
Замечание:
This function was renamed to oci_bind_by_name()
after PHP >= 5.0.0. For downward compatibility
ocibindbyname() can also be used.
This is deprecated, however.
Внимание | It is a bad idea to use magic quotes and
ocibindbyname() simultaneously as no quoting
is needed on quoted variables and any quotes magically applied
will be written into your database as
ocibindbyname() is not able to distinguish
magically added quotings from those added by intention.
|
|
· Гостей: 21
· Пользователей: 0
· Всего пользователей: 453
· Новый пользователь: ZDA
|
|