Note that the SQLITE3_OPEN_READONLY flag cannot be combined with the SQLITE3_OPEN_CREATE flag. If you combine both of these flags, a rather unhelpful "Unable to open database: out of memory" exception will be thrown.(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SQLite3::__construct — Instantiates an SQLite3 object and opens an SQLite 3 database
$filename, int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, string $encryptionKey = "")Instantiates an SQLite3 object and opens a connection to an SQLite 3 database. If the build includes encryption, then it will attempt to use the key.
filename
Path to the SQLite database, or :memory: to use in-memory database.
If filename is an empty string, then a private, temporary on-disk
database will be created. This private database will be automatically
deleted as soon as the database connection is closed.
flags
Optional flags used to determine how to open the SQLite database. By
default, open uses SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.
SQLITE3_OPEN_READONLY: Open the database for
reading only.
SQLITE3_OPEN_READWRITE: Open the database for
reading and writing.
SQLITE3_OPEN_CREATE: Create the database if it
does not exist.
encryptionKeyAn optional encryption key used when encrypting and decrypting an SQLite database. If the SQLite encryption module is not installed, this parameter will have no effect.
Throws an Exception on failure.
| Versione | Descrizione |
|---|---|
| 7.0.10 |
The filename can now be empty to use a private,
temporary on-disk database.
|
Example #1 SQLite3::__construct() example
<?php
$db = new SQLite3('mysqlitedb.db');
$db->exec('CREATE TABLE foo (bar TEXT)');
$db->exec("INSERT INTO foo (bar) VALUES ('This is a test')");
$result = $db->query('SELECT bar FROM foo');
var_dump($result->fetchArray());
?>Note that the SQLITE3_OPEN_READONLY flag cannot be combined with the SQLITE3_OPEN_CREATE flag. If you combine both of these flags, a rather unhelpful "Unable to open database: out of memory" exception will be thrown.$encryption_key and all encryption features will be enabled only if the SQLite encryption module is installed. It's a proprietary, costly module. So if it's not present, supplying an encryption key will have absolutely no effect.This constructor offers no built-in way to set the file's protection, for example, to allow group-wide read-write access to other users belonging to the www-data group. It is possible to create an empty file, then use chmod() to set the protection as needed. You can use code like this to create the file so it is group-writable (0664).
<?php
if ( !file_exists( $path ) ) {
touch( $path );
chmod( $path, 0664 );
}
$sqlite_handle = new SQLite3( $path, SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, '' );
?>
SQLite3 uses the same file protection on the .sqlite file you create for its other files, the .,sqlite-shm and .sqlite-wal files.