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 — Создаёт экземпляр объекта SQLite3 и открывает соединение с базой
$filename, int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, string $encryptionKey = "")Создаёт экземпляр объекта SQLite3 и открывает соединение с базой. Если включили шифрование, то появляется возможность использовать ключ.
filename
Путь к SQLite базе или :memory:, для использования базы в оперативной памяти.
Если filename задать как пустую строку, то будет
создана приватная, временная база данных на диске. Эта база данных будет
удалена сразу после закрытия соединения с ней.
flags
Необязательные флаги, для определения типа открытия базы данных.
По умолчанию, используется SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.
SQLITE3_OPEN_READONLY: Открыть только для чтения.
SQLITE3_OPEN_READWRITE: Открыть для чтения и записи.
SQLITE3_OPEN_CREATE: Создать новый файл базы данных, если он отсутствует
encryptionKeyНеобязательный ключ для шифрования/расшифровки базы данных. Если модуль шифрования не установлен, то данный параметр будет проигнорирован.
Метод выбрасывает исключение Exception, если возникла ошибка.
| Версия | Описание |
|---|---|
| 7.0.10 |
Параметр filename разрешается задавать пустой строкой,
чтобы создать на диске приватную временную базу данных.
|
Пример #1 Пример использования метода SQLite3::__construct()
<?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.