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 notes

38
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()。最后,不要忘记在不再需要语句时关闭它,因为它会释放一些内存。
6
paule-panke at example dot com
7 年前
在调用 SQLite3Result::fetchArray() 之前,使用 SQLite3Result::numColumns() 检查空结果。

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