Вы не зарегистрированы? Нажмите здесь для регистрации.
Забыли пароль? Запросите новый здесь.
|
Вы должны авторизироваться, чтобы добавить сообщение.
|
|
|
Последние активные темы форума |
|
oci_bind_by_name
(PHP 5) oci_bind_by_name --
Привязывает переменную PHP к соответствующей метке в SQL-выражении.
Описаниеbool oci_bind_by_name ( resource stmt, string ph_name, mixed &variable [, int maxlength [, int type]] ) oci_bind_by_name() привязывает переменную
variable к метке ph_name.
Будет ли она использоваться для вывода или ввода - выяснится в процессе
выполнения и необходимые ресурсы будут выделены по необходимости.
Параметр length устанавливает максимальный объем
в байтах получаемой переменной. Если параметр length
равен -1, то oci_bind_by_name() будет использовать
текущую длину variable как максимальную.
Если вы хотите привязать абстрактный тип данных (LOB/ROWID/BFILE), то
вам необходимо сначала создать дескриптор с помощью
oci_new_descriptor(). Параметр
length не используется с абстрактными типами
данных и должен быть равен -1. Параметр type
говорит Oracle, какой тип дескриптора мы хотим использовать. Возможные
значения этого параметра:
OCI_B_FILE - для BFILE;
OCI_B_CFILE - для CFILE;
OCI_B_CLOB - для CLOB;
OCI_B_BLOB - для BLOB;
OCI_B_ROWID - для ROWID;
OCI_B_NTY - для именованных типов данных;
OCI_B_CURSOR - для курсоров, созданных ранее с
помощью oci_new_cursor().
Пример 1. Пример использования oci_bind_by_name()
<?php
/* oci_bind_by_name 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
=
oci_connect
(
"scott"
,
"tiger"
);
$stmt
=
oci_parse
(
$conn
,
"
INSERT INTO
emp (empno, ename)
VALUES
(:empno,:ename)
RETURNING
ROWID
INTO
:rid
"
);
$data
= array(
1111
=>
"Larry"
,
2222
=>
"Bill"
,
3333
=>
"Jim"
);
$rowid
=
oci_new_descriptor
(
$conn
,
OCI_D_ROWID
);
oci_bind_by_name
(
$stmt
,
":empno"
,
$empno
,
32
);
oci_bind_by_name
(
$stmt
,
":ename"
,
$ename
,
32
);
oci_bind_by_name
(
$stmt
,
":rid"
,
$rowid
, -
1
,
OCI_B_ROWID
);
$update
=
oci_parse
(
$conn
,
"
UPDATE
emp
SET
sal = :sal
WHERE
ROWID = :rid
"
);
oci_bind_by_name
(
$update
,
":rid"
,
$rowid
, -
1
,
OCI_B_ROWID
);
oci_bind_by_name
(
$update
,
":sal"
,
$sal
,
32
);
$sal
=
10000
;
while (list(
$empno
,
$ename
) =
each
(
$data
)) {
oci_execute
(
$stmt
);
oci_execute
(
$update
);
}
$rowid
->
free
();
oci_free_statement
(
$update
);
oci_free_statement
(
$stmt
);
$stmt
=
oci_parse
(
$conn
,
"
SELECT
*
FROM
emp
WHERE
empno
IN
(1111,2222,3333)
"
);
oci_execute
(
$stmt
);
while (
$row
=
oci_fetch_assoc
(
$stmt
)) {
var_dump
(
$row
);
}
oci_free_statement
(
$stmt
);
/* delete our "junk" from the emp table.... */
$stmt
=
oci_parse
(
$conn
,
"
DELETE FROM
emp
WHERE
empno
IN
(1111,2222,3333)
"
);
oci_execute
(
$stmt
);
oci_free_statement
(
$stmt
);
oci_close
(
$conn
);
?>
|
|
Помните о том, что при использовании этой функции, конечные пробелы у
строки будут обрезаны. Смотрите следующий пример:
Пример 2. Пример oci_bind_by_name()
<?php
$connection
=
oci_connect
(
'apelsin'
,
'kanistra'
);
$query
=
"INSERT INTO test_table VALUES(:id, :text)"
;
$statement
=
oci_parse
(
$query
);
oci_bind_by_name
(
$statement
,
":id"
,
1
);
oci_bind_by_name
(
$statement
,
":text"
,
"trailing spaces follow "
);
oci_execute
(
$statement
);
/*
Этот код добавит в базу только строку 'trailing spaces follow', без
пробелов в конце строки
*/
?>
|
|
Пример 3. Пример oci_bind_by_name()
<?php
$connection
=
oci_connect
(
'apelsin'
,
'kanistra'
);
$query
=
"INSERT INTO test_table VALUES(:id, 'trailing spaces follow ')"
;
$statement
=
oci_parse
(
$query
);
oci_bind_by_name
(
$statement
,
":id"
,
1
);
oci_execute
(
$statement
);
/*
А этот код добавит в базу строку 'trailing spaces follow ' вместе с
пробелами в конце строки
*/
?>
|
|
Внимание | Использовать magic_quotes_gpc,
magic_quotes_runtime или
addslashes() вместе с oci_bind_by_name()
- это определенно плохая идея, т.к. в этих случаях кавычки будут
записаны в базу вместе с данными. oci_bind_by_name()
не может отличить "магические кавычки" от тех, что были добавлены
намеренно.
|
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
|
· Гостей: 18
· Пользователей: 0
· Всего пользователей: 453
· Новый пользователь: ZDA
|
|