請注意,bindParam 的第二個參數需要一個變數。
如果您要綁定一個值,例如陣列項目,請使用 bindValue。
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SQLite3Stmt::bindParam — 將參數繫結至陳述式變數
將參數繫結至陳述式變數。
在 PHP 7.2.14 和 7.3.0 之前的版本中,如果要在後續呼叫 SQLite3Stmt::execute() 時正確更新繫結值,則必須在第一次呼叫 SQLite3Stmt::execute() 之後呼叫 SQLite3Stmt::reset()。如果未呼叫 SQLite3Stmt::reset(),則繫結值將不會改變,即使傳遞給 SQLite3Stmt::bindParam() 的變數的值已更改,或已再次呼叫 SQLite3Stmt::bindParam() 也是如此。
param
用於識別應繫結值的陳述式變數的 字串(用於命名參數)或 整數(用於位置參數)。如果命名參數不是以冒號 (:
) 或 at 符號 (@
) 開頭,則會自動在前面加上冒號 (:
)。位置參數從 1
開始。
var
要繫結到陳述式變數的參數。
type
要繫結的參數的資料類型。
SQLITE3_INTEGER
:值是有號整數,根據值的大小,以 1、2、3、4、6 或 8 個位元組儲存。
SQLITE3_FLOAT
:值是浮點值,儲存為 8 位元組的 IEEE 浮點數。
SQLITE3_TEXT
:值是文字字串,使用資料庫編碼(UTF-8、UTF-16BE 或 UTF-16-LE)儲存。
SQLITE3_BLOB
:值是一個資料區塊 (blob),完全按照輸入的樣子儲存。
SQLITE3_NULL
:值是 NULL 值。
從 PHP 7.0.7 開始,如果省略 type
,則會根據 var
的類型自動偵測:布林值 和 整數 會被視為 SQLITE3_INTEGER
,浮點數 會被視為 SQLITE3_FLOAT
,null 會被視為 SQLITE3_NULL
,而所有其他類型會被視為 SQLITE3_TEXT
。以前,如果省略 type
,則預設為 SQLITE3_TEXT
。
注意事項:
如果
var
是null
,則不論指定的type
為何,它一律會被視為SQLITE3_NULL
。
版本 | 說明 |
---|---|
7.4.0 |
param 現在也支援 @param 表示法。 |
範例 #1 SQLite3Stmt::bindParam() 用法
這個例子展示了如何使用單個準備好的語句和單個參數綁定來插入多行具有不同值的數據。
<?php
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE foo (bar TEXT)");
$stmt = $db->prepare("INSERT INTO foo VALUES (:bar)");
$stmt->bindParam(':bar', $bar, SQLITE3_TEXT);
$bar = 'baz';
$stmt->execute();
$bar = 42;
$stmt->execute();
$res = $db->query("SELECT * FROM foo");
while (($row = $res->fetchArray(SQLITE3_ASSOC))) {
var_dump($row);
}
?>
以上範例將輸出:
array(1) { ["bar"]=> string(3) "baz" } array(1) { ["bar"]=> string(2) "42" }