PHP 7.4.0RC6 Released!

SQLite3::query

(PHP 5 >= 5.3.0, PHP 7)

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

Açıklama

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

Bir SQL sorgusu çalıştırır ve sonucu bir SQLite3Result nesnesi olarak döndürür.

Değiştirgeler

sorgu

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

Dönen Değerler

Sorgu sonuç döndürürse bir SQLite3Result nesnesi, başarılı olur ancak sonuç döndürmezse TRUE aksi takdirde 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 add a note

User Contributed Notes 2 notes

up
40
bohwaz
6 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
2 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