PHP Conference Japan 2024

SQLite3Stmt::bindParam

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Stmt::bindParam將參數繫結至陳述式變數

說明

public SQLite3Stmt::bindParam(字串|整數 $param, 混合 &$var, 整數 $type = SQLITE3_TEXT): 布林值

將參數繫結至陳述式變數。

注意

在 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_FLOATnull 會被視為 SQLITE3_NULL,而所有其他類型會被視為 SQLITE3_TEXT。以前,如果省略 type,則預設為 SQLITE3_TEXT

注意事項:

如果 varnull,則不論指定的 type 為何,它一律會被視為 SQLITE3_NULL

傳回值

如果參數繫結到陳述式變數,則傳回 true,失敗則傳回 false

更新日誌

版本 說明
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"
}

另請參閱

新增註解

使用者貢獻的註解 1 則註解

3
匿名
10 年前
請注意,bindParam 的第二個參數需要一個變數。
如果您要綁定一個值,例如陣列項目,請使用 bindValue。
To Top