PHP Conference Japan 2024

SQLite3::query

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

SQLite3::query执行 SQL 查询

描述

public SQLite3::query(string $query): SQLite3Result|false

执行 SQL 查询,返回一个 SQLite3Result 对象。如果查询没有产生结果(例如 DML 语句),则返回的 SQLite3Result 对象实际上不可用。对于此类查询,请改用 SQLite3::exec()

参数

query

要执行的 SQL 查询。

返回值

返回一个 SQLite3Result 对象,或者在失败时返回 false

示例

示例 #1 SQLite3::query() 示例

<?php
$db
= new SQLite3('mysqlitedb.db');

$results = $db->query('SELECT bar FROM foo');
while (
$row = $results->fetchArray()) {
var_dump($row);
}
?>

添加备注

用户贡献的备注 2 条备注

bohwaz
11 年前
推荐的 SQLite3 查询方法是使用语句。对于表创建,查询可能很好(也更容易),但对于插入、更新或选择,你应该真正使用语句,它更容易也更安全,因为 SQLite 会根据其类型转义你的参数。SQLite 的内存使用也比你自己创建整个查询要少。示例

<?php

$db
= new SQLite3;
$statement = $db->prepare('SELECT * FROM table WHERE id = :id;');
$statement->bindValue(':id', $id);

$result = $statement->execute();

?>

你还可以重复使用语句并更改其参数,只需执行 $statement->reset()。最后,不要忘记在你不再需要语句时关闭它,因为它会释放一些内存。
paule-panke at example dot com
7 年前
在调用 SQLite3Result::fetchArray() 之前,使用 SQLite3Result::numColumns() 检查空结果。

与文档相反,SQLite3::query() 始终返回 SQLite3Result 实例,而不仅仅是对于返回行的查询(SELECT、EXPLAIN)。每次在无结果查询的结果上调用 SQLite3Result::fetchArray() 时,都会在内部再次执行查询,这很可能会破坏你的应用程序。
对于框架或 API,不可能事先知道查询是否会返回行(SQLite3 支持多语句查询)。因此,“不要执行 query('CREATE ...')” 的说法无效。
To Top