SQLite3Stmt::bindParam

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

SQLite3Stmt::bindParam将参数绑定到语句变量

描述

public SQLite3Stmt::bindParam(string|int $param, mixed &$var, int $type = SQLITE3_TEXT): bool

将参数绑定到语句变量。

注意

在 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 的类型自动检测:boolint 被视为 SQLITE3_INTEGERfloat 被视为 SQLITE3_FLOATnull 被视为 SQLITE3_NULL,所有其他类型都被视为 SQLITE3_TEXT。以前,如果省略了 type,它默认为 SQLITE3_TEXT

注意:

如果 varnull,它始终被视为 SQLITE3_NULL,无论给定的 type 是什么。

返回值

如果参数绑定到语句变量,则返回 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 个注释

匿名
9 年前
请注意,bindParam 需要一个变量作为第二个参数。
如果您想绑定一个值(例如数组项),请使用 bindValue。
To Top