请注意,此 bindParam 需要一个变量作为第二个参数。
如果要绑定值(例如数组项),请使用 bindValue。
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SQLite3Stmt::bindParam — 将参数绑定到语句变量
将参数绑定到语句变量。
在 PHP 7.2.14 和 7.3.0 之前,分别需要在第一次调用 SQLite3Stmt::reset() 后调用 SQLite3Stmt::execute(),如果后续调用 SQLite3Stmt::execute() 时需要正确更新绑定值。如果未调用 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
:该值为数据块,按原样存储。
SQLITE3_NULL
:该值为 NULL 值。
从 PHP 7.0.7 开始,如果省略了 type
,则会根据 var
的类型自动检测:布尔值 和 整数 被视为 SQLITE3_INTEGER
,浮点数 被视为 SQLITE3_FLOAT
,空 被视为 SQLITE3_NULL
,其他所有类型被视为 SQLITE3_TEXT
。以前,如果省略了 type
,则默认为 SQLITE3_TEXT
。
注意:
如果
var
为null
,则始终将其视为SQLITE3_NULL
,而不管给定的type
是什么。
版本 | 描述 |
---|---|
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" }