W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
(PECL ibm_db2 >= 1.0.0)
db2_bind_param — 將 PHP 變量綁定到 SQL 語句參數(shù)
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 語句參數(shù) 由 db2_prepare() 返回。此功能為您提供更多 控制參數(shù)類型、數(shù)據(jù)類型、精度和小數(shù)位數(shù) 參數(shù),而不是簡單地將變量作為可選輸入的一部分傳遞 數(shù)組設(shè)置為 db2_execute()。
stmt
從 db2_prepare() 返回的準(zhǔn)備好的語句。
parameter_number
指定參數(shù)在準(zhǔn)備好的 1 索引位置 陳述。
variable_name
一個字符串,指定要綁定到 的 PHP 變量的名稱 參數(shù)指定。parameter_number
parameter_type
一個常量,指定 PHP 變量是否應(yīng)綁定到 SQL 參數(shù)作為輸入?yún)?shù) (), 輸出參數(shù) (),或作為 接受輸入并返回輸出的參數(shù) ().為避免內(nèi)存開銷,您可以 還指定綁定 PHP 變量 添加到包含大型對象(BLOB、CLOB 或 DBCLOB)的文件的名稱 數(shù)據(jù)。DB2_PARAM_IN
DB2_PARAM_OUT
DB2_PARAM_INOUT
DB2_PARAM_FILE
data_type
指定 PHP 變量應(yīng)為 SQL 數(shù)據(jù)類型的常量 綁定為:、、 或 之一。DB2_BINARY
DB2_CHAR
DB2_DOUBLE
DB2_LONG
precision
指定變量應(yīng)用于 數(shù)據(jù)庫。此參數(shù)還可用于檢索 XML 輸出值 從存儲過程。非負(fù)值指定 將從數(shù)據(jù)庫中檢索的 XML 數(shù)據(jù)。如果此參數(shù) 則默認(rèn)為 1MB 用于檢索 XML 存儲過程的輸出值。
scale
指定變量應(yīng)用于 數(shù)據(jù)庫。
成功時返回 true, 或者在失敗時返回 false。
示例 #1 將 PHP 變量綁定到預(yù)準(zhǔn)備語句
以下示例中的 SQL 語句使用 WHERE 子句。我們調(diào)用 db2_bind_param() 來綁定兩個 PHP 變量對應(yīng)的 SQL 參數(shù)。請注意,PHP 在調(diào)用 db2_bind_param() 之前不必聲明或賦值變量;在此示例中,在調(diào)用 db2_bind_param() 之前分配了一個值,但在調(diào)用 db2_bind_param() 之后分配了一個值。變量必須綁定,并且 接受輸入的參數(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";
}
}
?>
以上示例會輸出:
Pook, cat, 3.2 Rickety Ride, goat, 9.7 Peaches, dog, 12.3
示例 #2 使用 IN 和 OUT 參數(shù)調(diào)用存儲過程
以下示例中match_animal的存儲過程接受 三個不同的參數(shù):
此外,存儲過程返回一個結(jié)果集,該結(jié)果集由 按字母順序列出的動物從相應(yīng)的動物開始 到第一個參數(shù)的輸入值,并以動物結(jié)尾 對應(yīng)于第二個參數(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";
}
}
?>
以上示例會輸出:
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)制大型對象 (BLOB)
大型對象的數(shù)據(jù)通常存儲在文件(如 XML)中 文檔或音頻文件。而不是將整個文件讀入 PHP 變量,然后將該 PHP 變量綁定到 SQL 語句中,即可 可以通過將文件直接綁定到輸入來避免一些內(nèi)存開銷 SQL 語句的參數(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);
?>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: