codecamp

PHP8 db2_bind_param

(PECL ibm_db2 >= 1.0.0)

db2_bind_param — 将 PHP 变量绑定到 SQL 语句参数

说明

db2_bind_param(
    resource $stmt,
    int $parameter_number,
    string $variable_name,
    int $parameter_type = DB2_PARAM_IN,
    int $data_type = 0,
    int $precision = -1,
    int $scale = 0
): bool

将 PHP 变量绑定到语句资源中的 SQL 语句参数 由 db2_prepare() 返回。此功能为您提供更多 控制参数类型、数据类型、精度和小数位数 参数,而不是简单地将变量作为可选输入的一部分传递 数组设置为 db2_execute()。

参数 

stmt

从 db2_prepare() 返回的准备好的语句。

parameter_number

指定参数在准备好的 1 索引位置 陈述。

variable_name

一个字符串,指定要绑定到 的 PHP 变量的名称 参数指定。parameter_number

parameter_type

一个常量,指定 PHP 变量是否应绑定到 SQL 参数作为输入参数 (), 输出参数 (),或作为 接受输入并返回输出的参数 ().为避免内存开销,您可以 还指定绑定 PHP 变量 添加到包含大型对象(BLOB、CLOB 或 DBCLOB)的文件的名称 数据。DB2_PARAM_INDB2_PARAM_OUTDB2_PARAM_INOUTDB2_PARAM_FILE

data_type

指定 PHP 变量应为 SQL 数据类型的常量 绑定为:、、 或 之一。DB2_BINARYDB2_CHARDB2_DOUBLEDB2_LONG

precision

指定变量应用于 数据库。此参数还可用于检索 XML 输出值 从存储过程。非负值指定 将从数据库中检索的 XML 数据。如果此参数 则默认为 1MB 用于检索 XML 存储过程的输出值。

scale

指定变量应用于 数据库。

返回值 

成功时返回 true, 或者在失败时返回 false。

示例 

示例 #1 将 PHP 变量绑定到预准备语句

以下示例中的 SQL 语句使用 WHERE 子句。我们调用 db2_bind_param() 来绑定两个 PHP 变量对应的 SQL 参数。请注意,PHP 在调用 db2_bind_param() 之前不必声明或赋值变量;在此示例中,在调用 db2_bind_param() 之前分配了一个值,但在调用 db2_bind_param() 之后分配了一个值。变量必须绑定,并且 接受输入的参数在调用 db2_execute() 之前必须分配任何值。$lower_limit$upper_limit

<?php

$sql = 'SELECT name, breed, weight FROM animals
    WHERE weight > ? AND weight < ?';
$conn = db2_connect($database, $user, $password);
$stmt = db2_prepare($conn, $sql);

// We can declare the variable before calling db2_bind_param()
$lower_limit = 1;

db2_bind_param($stmt, 1, "lower_limit", DB2_PARAM_IN);
db2_bind_param($stmt, 2, "upper_limit", DB2_PARAM_IN);

// We can also declare the variable after calling db2_bind_param()
$upper_limit = 15.0;

if (db2_execute($stmt)) {
    while ($row = db2_fetch_array($stmt)) {
        print "{$row[0]}, {$row[1]}, {$row[2]}\n";
    }
}
?>

以上示例会输出:

Pook, cat, 3.2
Rickety Ride, goat, 9.7
Peaches, dog, 12.3

示例 #2 使用 IN 和 OUT 参数调用存储过程

以下示例中match_animal的存储过程接受 三个不同的参数:

  1. 一个输入 (IN) 参数,该参数接受第一只动物的名称为 输入
  2. 接受第二个名称的输入输出 (INOUT) 参数 animal 作为输入,如果 数据库中的动物与该名称匹配TRUE
  3. 一个输出 (OUT) 参数,该参数返回 两只已识别的动物

此外,存储过程返回一个结果集,该结果集由 按字母顺序列出的动物从相应的动物开始 到第一个参数的输入值,并以动物结尾 对应于第二个参数的输入值。

<?php

$sql = 'CALL match_animal(?, ?, ?)';
$conn = db2_connect($database, $user, $password);
$stmt = db2_prepare($conn, $sql);

$name = "Peaches";
$second_name = "Rickety Ride";
$weight = 0;

db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
db2_bind_param($stmt, 2, "second_name", DB2_PARAM_INOUT);
db2_bind_param($stmt, 3, "weight", DB2_PARAM_OUT);

print "Values of bound parameters _before_ CALL:\n";
print "  1: {$name} 2: {$second_name} 3: {$weight}\n\n";

if (db2_execute($stmt)) {
    print "Values of bound parameters _after_ CALL:\n";
    print "  1: {$name} 2: {$second_name} 3: {$weight}\n\n";

    print "Results:\n";
    while ($row = db2_fetch_array($stmt)) {
        print "  {$row[0]}, {$row[1]}, {$row[2]}\n";
    }
}
?>

以上示例会输出:

Values of bound parameters _before_ CALL:
  1: Peaches 2: Rickety Ride 3: 0

Values of bound parameters _after_ CALL:
  1: Peaches 2: TRUE 3: 22

Results:
  Peaches, dog, 12.3
  Pook, cat, 3.2
  Rickety Ride, goat, 9.7

示例 #3 直接从文件插入二进制大型对象 (BLOB)

大型对象的数据通常存储在文件(如 XML)中 文档或音频文件。而不是将整个文件读入 PHP 变量,然后将该 PHP 变量绑定到 SQL 语句中,即可 可以通过将文件直接绑定到输入来避免一些内存开销 SQL 语句的参数。下面的示例演示了如何 将文件直接绑定到 BLOB 列中。

<?php
$stmt = db2_prepare($conn, "INSERT INTO animal_pictures(picture) VALUES (?)");

$picture = "/opt/albums/spook/grooming.jpg";
$rc = db2_bind_param($stmt, 1, "picture", DB2_PARAM_FILE);
$rc = db2_execute($stmt);
?>

参见 

  • db2_execute() - 执行准备好的 SQL 语句
  • db2_prepare() - 准备要执行的 SQL 语句


PHP8 db2_autocommit
PHP8 db2_client_info
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PHP8 语言参考

PHP8 函数参考

PHP8 影响 PHP 行为的扩展

PHP8 Componere

PHP8 安装/配置

PHP8 外部函数接口

PHP8 选项和信息

PHP8 选项/信息 函数

PHP8 Windows Cache for PHP

PHP8 WinCache 函数

PHP8 Yac

PHP8 身份认证服务

PHP8 Radius 函数

PHP8 压缩与归档扩展

PHP8 Phar

PHP8 Zip

PHP8 ZipArchive 类

PHP8 加密扩展

PHP8 OpenSSL

PHP8 OpenSSL 函数

PHP8 Sodium 函数

PHP8 数据库扩展

PHP8 针对各数据库系统对应的扩展

PHP8 CUBRID 函数

PHP8 Firebird/InterBase

PHP8 Firebird/InterBase函数

PHP8 MongoDB介绍驱动程序体系结构和特殊功能

PHP8 MongoDB\Driver\Command 类

PHP8 MongoDB\Driver\Query 类

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }