PHP8 db2_bind_param

2024-04-05 19:18 更新

(PECL ibm_db2 >= 1.0.0)

db2_bind_param — 將 PHP 變量綁定到 SQL 語(yǔ)句參數(shù)

說(shuō)明

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 變量綁定到語(yǔ)句資源中的 SQL 語(yǔ)句參數(shù) 由 db2_prepare() 返回。此功能為您提供更多 控制參數(shù)類型、數(shù)據(jù)類型、精度和小數(shù)位數(shù) 參數(shù),而不是簡(jiǎn)單地將變量作為可選輸入的一部分傳遞 數(shù)組設(shè)置為 db2_execute()。

參數(shù) 

stmt

從 db2_prepare() 返回的準(zhǔn)備好的語(yǔ)句。

parameter_number

指定參數(shù)在準(zhǔn)備好的 1 索引位置 陳述。

variable_name

一個(gè)字符串,指定要綁定到 的 PHP 變量的名稱 參數(shù)指定。parameter_number

parameter_type

一個(gè)常量,指定 PHP 變量是否應(yīng)綁定到 SQL 參數(shù)作為輸入?yún)?shù) (), 輸出參數(shù) (),或作為 接受輸入并返回輸出的參數(shù) ().為避免內(nèi)存開(kāi)銷,您可以 還指定綁定 PHP 變量 添加到包含大型對(duì)象(BLOB、CLOB 或 DBCLOB)的文件的名稱 數(shù)據(jù)。DB2_PARAM_INDB2_PARAM_OUTDB2_PARAM_INOUTDB2_PARAM_FILE

data_type

指定 PHP 變量應(yīng)為 SQL 數(shù)據(jù)類型的常量 綁定為:、、 或 之一。DB2_BINARYDB2_CHARDB2_DOUBLEDB2_LONG

precision

指定變量應(yīng)用于 數(shù)據(jù)庫(kù)。此參數(shù)還可用于檢索 XML 輸出值 從存儲(chǔ)過(guò)程。非負(fù)值指定 將從數(shù)據(jù)庫(kù)中檢索的 XML 數(shù)據(jù)。如果此參數(shù) 則默認(rèn)為 1MB 用于檢索 XML 存儲(chǔ)過(guò)程的輸出值。

scale

指定變量應(yīng)用于 數(shù)據(jù)庫(kù)。

返回值 

成功時(shí)返回 true, 或者在失敗時(shí)返回 false。

示例 

示例 #1 將 PHP 變量綁定到預(yù)準(zhǔn)備語(yǔ)句

以下示例中的 SQL 語(yǔ)句使用 WHERE 子句。我們調(diào)用 db2_bind_param() 來(lái)綁定兩個(gè) PHP 變量對(duì)應(yīng)的 SQL 參數(shù)。請(qǐng)注意,PHP 在調(diào)用 db2_bind_param() 之前不必聲明或賦值變量;在此示例中,在調(diào)用 db2_bind_param() 之前分配了一個(gè)值,但在調(diào)用 db2_bind_param() 之后分配了一個(gè)值。變量必須綁定,并且 接受輸入的參數(shù)在調(diào)用 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";
    }
}
?>

以上示例會(huì)輸出:

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

示例 #2 使用 IN 和 OUT 參數(shù)調(diào)用存儲(chǔ)過(guò)程

以下示例中match_animal的存儲(chǔ)過(guò)程接受 三個(gè)不同的參數(shù):

  1. 一個(gè)輸入 (IN) 參數(shù),該參數(shù)接受第一只動(dòng)物的名稱為 輸入
  2. 接受第二個(gè)名稱的輸入輸出 (INOUT) 參數(shù) animal 作為輸入,如果 數(shù)據(jù)庫(kù)中的動(dòng)物與該名稱匹配TRUE
  3. 一個(gè)輸出 (OUT) 參數(shù),該參數(shù)返回 兩只已識(shí)別的動(dòng)物

此外,存儲(chǔ)過(guò)程返回一個(gè)結(jié)果集,該結(jié)果集由 按字母順序列出的動(dòng)物從相應(yīng)的動(dòng)物開(kāi)始 到第一個(gè)參數(shù)的輸入值,并以動(dòng)物結(jié)尾 對(duì)應(yīng)于第二個(gè)參數(shù)的輸入值。

<?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";
    }
}
?>

以上示例會(huì)輸出:

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 直接從文件插入二進(jìn)制大型對(duì)象 (BLOB)

大型對(duì)象的數(shù)據(jù)通常存儲(chǔ)在文件(如 XML)中 文檔或音頻文件。而不是將整個(gè)文件讀入 PHP 變量,然后將該 PHP 變量綁定到 SQL 語(yǔ)句中,即可 可以通過(guò)將文件直接綁定到輸入來(lái)避免一些內(nèi)存開(kāi)銷 SQL 語(yǔ)句的參數(shù)。下面的示例演示了如何 將文件直接綁定到 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);
?>

參見(jiàn) 

  • db2_execute() - 執(zhí)行準(zhǔn)備好的 SQL 語(yǔ)句
  • db2_prepare() - 準(zhǔn)備要執(zhí)行的 SQL 語(yǔ)句


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)