создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

PHP. Руководство по PHP. 2005

oci_bind_by_name

Пред.

След.

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()

    не может отличить "магические кавычки" от тех, что были добавлены

    намеренно.

  • Замечание:

    В версиях PHP ниже 5.0.0 эта функция называлась ocinewcollection().

    В PHP 5.0.0 и выше ocinewcollection() является

    алиасом oci_new_collection(), поэтому вы можете

    продолжать использовать это имя, однако это не рекомендуется.

    Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

    Пред.

    Начало

    След.

    Функции для работы с Oracle

    Уровень выше

    oci_cancel

    Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

    Ваше письмо×
    Free Web Hosting