PHP Conference Japan 2024

cubrid_bind

(PECL CUBRID >= 8.3.0)

cubrid_bind將變數作為參數綁定到預備語句

說明

cubrid_bind(
    資源 $req_identifier,
    整數 $bind_index,
    混合型別 (mixed) $bind_value,
    字串 (string) $bind_value_type = ?
): 布林值 (bool)

cubrid_bind() 函式用於將值綁定到傳遞給 cubrid_prepare() 的 SQL 陳述式中對應的命名或問號佔位符。如果未提供 bind_value_type,則預設為字串。

注意事項:

如果要綁定的資料類型是 BLOB/CLOB,CUBRID 將嘗試將資料映射為 PHP 串流。如果實際的綁定值類型不是串流,CUBRID 會將其轉換為字串,並將其用作用戶端檔案系統上檔案的完整路徑和檔名。

如果要綁定的資料類型明確為 ENUM,則 bind_value 參數應該是字串格式的列舉元素。

在 CUBRID 分片環境中,cubrid_bind() 函式必須包含 bind_value_type 參數。

下表顯示了替代值的類型。

CUBRID 綁定資料類型
支援 綁定類型 對應的 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 時,您需要將值的確切類型指定為參數)。

傳回值

成功時傳回 true,失敗時傳回 false

更新日誌

版本 說明
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);
}
?>

另請參閱

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top