首页 >函数列表 >oci_bind_by_name

oci_bind_by_name

oci_bind_by_name

(PHP 5, PECL OCI8 >= 1.1.0)

oci_bind_by_name绑定一个 PHP 变量到一个 Oracle 位置标志符

说明

bool oci_bind_by_name ( resource $stmt , string $ph_name , mixed &$variable [, int $maxlength [, int $type ]] )

oci_bind_by_name() 将 PHP 变量 variable 绑定到 Oracle 的位置标志符 ph_name。该变量是否会被用作输入输出是在运行时决定的,并且函数给该变量分配必要的存储空间。length 参数确定该绑定的最大长度,如果将 length 设为 -1,oci_bind_by_name() 会用 variable 变量的当前长度确定绑定的最大长度。

如果要绑定一个抽象数据类型(LOB/ROWID/BFILE),需要先用 oci_new_descriptor() 函数分配空间。length 没有用于抽象数据类型,应被设为 -1。type 参数告诉 Oracle 要使用什么样的描述符。可能的值为:

  • SQLT_FILE - 对应于 BFILE;

  • SQLT_CFILE - 对应于 CFILE;

  • SQLT_CLOB - 对应于 CLOB;

  • SQLT_BLOB - 对应于 BLOB;

  • SQLT_ROWID - 对应于 ROWID;

  • SQLT_NTY - 对应于有名字的数据类型;

  • SQLT_INT - 对应于 integers;

  • SQLT_CHR - 对应于 VARCHARs;

  • SQLT_BIN - 对应于 RAW 列;

  • SQLT_LNG - 对应于 LONG 列;

  • SQLT_LBI - 对应于 LONG RAW 列;

  • SQLT_RSET - 对应于游标,是之前由 oci_new_cursor() 创建的。

Example #1 oci_bind_by_name() 例子

<?php


$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($connOCI_D_ROWID);

oci_bind_by_name($stmt":empno"$empno32);
oci_bind_by_name($stmt":ename"$ename32);
oci_bind_by_name($stmt":rid",   $rowid, -1OCI_B_ROWID);

$update oci_parse($conn"
                            UPDATE
                                  emp
                               SET
                                  sal = :sal
                             WHERE
                                  ROWID = :rid
                             "
);
oci_bind_by_name($update":rid"$rowid, -1OCI_B_ROWID);
oci_bind_by_name($update":sal"$sal,   32);

$sal 10000;

foreach (
$data as $empno => $ename) {
    
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);


$stmt oci_parse($conn"
                          DELETE FROM
                                     emp
                                WHERE
                                     empno
                                   IN
                                     (1111,2222,3333)
                                   "
);
oci_execute($stmt);
oci_free_statement($stmt);

oci_close($conn);
?>

记住,本函数删除了行尾的空白字符。见以下例子:

Example #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);

?>

Example #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);

?>

Warning

不要将 magic_quotes_gpc 或 addslashes()oci_bind_by_name() 同时使用,因为不需要转义,任何自动加上的引号都会被写入数据库中,因为 oci_bind_by_name() 不能分辨有意加上的引号和魔术引号。

成功时返回 TRUE, 或者在失败时返回 FALSE.

Note:

在 PHP 5.0.0 之前的版本必须使用 ocibindbyname() 替代本函数。该函数名仍然可用,为向下兼容作为 oci_bind_by_name() 的别名。不过其已被废弃,不推荐使用。


  • oci_bind_array_by_name
  • oci_bind_by_name
  • oci_cancel
  • oci_client_version
  • oci_close
  • oci_commit
  • oci_connect
  • oci_define_by_name
  • oci_error
  • oci_execute
  • oci_fetch
  • oci_fetch_all
  • oci_fetch_array
  • oci_fetch_assoc
  • oci_fetch_object
  • oci_fetch_row
  • oci_field_is_null
  • oci_field_name
  • oci_field_precision
  • oci_field_scale
  • oci_field_size
  • oci_field_type
  • oci_field_type_raw
  • oci_free_statement
  • oci_internal_debug
  • oci_lob_copy
  • oci_lob_is_equal
  • oci_new_collection
  • oci_new_connect
  • oci_new_cursor
  • oci_new_descriptor
  • oci_num_fields
  • oci_num_rows
  • oci_parse
  • oci_password_change
  • oci_pconnect
  • oci_result
  • oci_rollback
  • oci_server_version
  • oci_set_action
  • oci_set_client_identifier
  • oci_set_client_info
  • oci_set_edition
  • oci_set_module_name
  • oci_set_prefetch
  • oci_statement_type
  • PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道