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::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

注意:

如果 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 条注释

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