(PECL CUBRID >= 8.3.0)
cubrid_bind — 將變數作為參數綁定到預備語句
$req_identifier
,$bind_index
,$bind_value
,$bind_value_type
= ?cubrid_bind() 函式用於將值綁定到傳遞給 cubrid_prepare() 的 SQL 陳述式中對應的命名或問號佔位符。如果未提供 bind_value_type
,則預設為字串。
注意事項:
如果要綁定的資料類型是 BLOB/CLOB,CUBRID 將嘗試將資料映射為 PHP 串流。如果實際的綁定值類型不是串流,CUBRID 會將其轉換為字串,並將其用作用戶端檔案系統上檔案的完整路徑和檔名。
如果要綁定的資料類型明確為 ENUM,則
bind_value
參數應該是字串格式的列舉元素。在 CUBRID 分片環境中,cubrid_bind() 函式必須包含
bind_value_type
參數。
下表顯示了替代值的類型。
支援 | 綁定類型 | 對應的 SQL 類型 |
---|---|---|
已支援 | STRING | CHAR, VARCHAR |
NCHAR | NCHAR, NVARCHAR | |
BIT | BIT, VARBIT | |
NUMERIC 或 NUMBER | SHORT, INT, NUMERIC | |
FLOAT | FLOAT | |
DOUBLE | DOUBLE | |
TIME | TIME | |
DATE | DATE | |
TIMESTAMP | TIMESTAMP | |
OBJECT | OBJECT | |
ENUM | ENUM | |
BLOB | BLOB | |
CLOB | CLOB | |
NULL | NULL | |
未支援 | SET | SET |
MULTISET | MULTISET | |
SEQUENCE | SEQUENCE |
req_identifier
cubrid_prepare() 的結果,請求識別碼。
bind_index
綁定參數的位置。從 1 開始。
bind_value
要綁定的實際值。
bind_value_type
要綁定的值的類型。(預設省略。因此,系統內部預設使用字串。但是,當值為 NCHAR、BIT 或 BLOB/CLOB 時,您需要將值的確切類型指定為參數)。
版本 | 說明 |
---|---|
8.3.1 | 新增了 BLOB/CLOB 資料類型支援。 |
範例 #1 cubrid_bind() 範例
<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");
$result = cubrid_execute($conn, "SELECT code FROM event WHERE sports='Basketball' and gender='M'");
$row = cubrid_fetch_array($result, CUBRID_ASSOC);
$event_code = $row["code"];
cubrid_close_request($result);
$game_req = cubrid_prepare($conn, "SELECT athlete_code FROM game WHERE host_year=1992 and event_code=? and nation_code='USA'");
cubrid_bind($game_req, 1, $event_code, "number");
cubrid_execute($game_req);
printf("--- 夢幻隊 (1992 年美國男子奧運籃球隊) ---\n");
while ($athlete_code = cubrid_fetch_array($game_req, CUBRID_NUM)) {
$athlete_req = cubrid_prepare($conn, "SELECT name FROM athlete WHERE code=? AND nation_code='USA' AND event='Basketball' AND gender='M'");
cubrid_bind($athlete_req, 1, $athlete_code[0], "number");
cubrid_execute($athlete_req);
$row = cubrid_fetch_assoc($athlete_req);
printf("%s\n", $row["name"]);
}
cubrid_close_request($game_req);
cubrid_close_request($athlete_req);
cubrid_disconnect($conn);
?>
以上範例會輸出
--- Dream Team (1992 United States men's Olympic basketball team) --- Stockton John Robinson David Pippen Scottie Mullin C. Malone Karl Laettner C. Jordan Michael Johnson Earvin Ewing Patrick Drexler Clyde Bird Larry Barkley Charles
範例 #2 cubrid_bind() BLOB/CLOB 範例
<?php
$con = cubrid_connect("localhost", 33000, "demodb", "dba", "");
if ($con) {
cubrid_execute($con,"DROP TABLE if exists php_cubrid_lob_test");
cubrid_execute($con,"CREATE TABLE php_cubrid_lob_test (doc_content CLOB)");
$sql = "INSERT INTO php_cubrid_lob_test(doc_content) VALUES(?)";
$req = cubrid_prepare($con, $sql);
$fp = fopen("book.txt", "rb");
cubrid_bind($req, 1, $fp, "clob");
cubrid_execute($req);
}
?>
範例 #3 cubrid_bind() BLOB/CLOB 範例
<?php
$con = cubrid_connect("localhost", 33000, "demodb", "dba", "");
if ($con) {
cubrid_execute($con,"DROP TABLE if exists php_cubrid_lob_test");
cubrid_execute($con,"CREATE TABLE php_cubrid_lob_test (image BLOB)");
$sql = "INSERT INTO php_cubrid_lob_test(image) VALUES(?)";
$req = cubrid_prepare($con, $sql);
cubrid_bind($req, 1, "cubrid_logo.png", "blob");
cubrid_execute($req);
}
?>