$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.
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SQLite3::__construct — 实例化 SQLite3 对象并打开 SQLite 3 数据库
$filename
, int $flags
= SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, string $encryptionKey
= "")实例化 SQLite3 对象并打开连接到 SQLite 3 数据库的连接。如果构建包括加密,那么将尝试使用密钥。
filename
SQLite 数据库的路径,或 :memory:
使用内存数据库。如果 filename
是空字符串,那么将创建私有的临时磁盘数据库。一旦数据库连接关闭,这个私有数据库就会自动删除。
flags
可选的 flag,用于确定如何打开 SQLite 数据库。默认使用 SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE
打开。
SQLITE3_OPEN_READONLY
:以只读方式打开数据库。
SQLITE3_OPEN_READWRITE
:以读写方式打开数据库。
SQLITE3_OPEN_CREATE
:如果数据库不存在,则创建数据库。
encryptionKey
加密和解密 SQLite 数据库时使用的可选加密密钥。如果未安装 SQLite 加密模块,则此参数无效。
失败时抛出 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());
?>
$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.
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.