PHP 8.4.1 Released!

SQLite3::query

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

SQLite3::queryBir SQL sorgusu çalıştırır

Açıklama

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

SQLite3Result nesnesi döndürerek bir SQL sorgusu çalıştırır. Sorgu bir sonuç üretmezse (DML deyimleri gibi), dönen SQLite3Result nesnesi kullanılabilir durumda olmaz. Böyle sorgular için SQLite3::exec() kullanılmalıdır.

Bağımsız Değişkenler

sorgu

Çalıştırılacak SQL sorgusu.

Dönen Değerler

Bir SQLite3Result nesnesi, başarısızlık durumunda false döner.

Örnekler

Örnek 1 - SQLite3::query() örneği

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

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

add a note

User Contributed Notes 2 notes

up
42
bohwaz
11 years ago
The recommended way to do a SQLite3 query is to use a statement. For a table creation, a query might be fine (and easier) but for an insert, update or select, you should really use a statement, it's really easier and safer as SQLite will escape your parameters according to their type. SQLite will also use less memory than if you created the whole query by yourself. Example:

<?php

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

$result = $statement->execute();

?>

You can also re-use a statement and change its parameters, just do $statement->reset(). Finally don't forget to close a statement when you don't need it anymore as it will free some memory.
up
0
paule-panke at example dot com
7 years ago
Check with SQLite3Result::numColumns() for an empty result before calling SQLite3Result::fetchArray().

In contrast to the documentation SQLite3::query() always returns a SQLite3Result instance, not only for queries returning rows (SELECT, EXPLAIN). Each time SQLite3Result::fetchArray() is called on a result from a result-less query internally the query is executed again, which will most probably break your application.
For a framwork or API it's not possible to know in before whether or not a query will return rows (SQLite3 supports multi-statement queries). Therefore the argument "Don't execute query('CREATE ...')" is not valid.
To Top