请注意,bindParam 需要一个变量作为第二个参数。
如果您想绑定一个值(例如数组项),请使用 bindValue。
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SQLite3Stmt::bindParam — 将参数绑定到语句变量
将参数绑定到语句变量。
在 PHP 7.2.14 和 7.3.0 之前,分别在第一次调用 SQLite3Stmt::execute() 之后必须调用 SQLite3Stmt::reset(),如果绑定值应该在后续调用 SQLite3Stmt::execute() 上正确更新。如果未调用 SQLite3Stmt::reset(),则绑定值将不会更改,即使分配给传递给 SQLite3Stmt::bindParam() 的变量的值已更改,或者已再次调用 SQLite3Stmt::bindParam()。
param
一个 string(用于命名参数)或一个 int(用于位置参数),用于标识应将值绑定到的语句变量。如果命名参数不以冒号 (:
) 或 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
的类型自动检测:bool 和 int 被视为 SQLITE3_INTEGER
,float 被视为 SQLITE3_FLOAT
,null 被视为 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" }