使用PDO将SQLite3打开为READONLY?

时间:2009-08-29 20:13:02

标签: php sqlite pdo

SQLite3类有这样的选项。

$db = new SQLite3('mysqlitedb.db', SQLITE3_OPEN_READONLY);

在PDO中,您只需打开:

$db = new PDO('sqlite:mysqlitedb.db');

我的问题是,有没有办法在READONLY模式下用PDO打开数据库?

2 个答案:

答案 0 :(得分:3)

随着PHP 7.3的发布(估计将于2018年末发布),这将成为可能。

Thes语法如下:

$db = new PDO('sqlite:mysqlitedb.db', null, null, [PDO::SQLITE_ATTR_OPEN_FLAGS => PDO::SQLITE_OPEN_READONLY]);

Upstream commit

答案 1 :(得分:2)

我认为pdo不可能(但是?) php 5.3的pdo_sqlite驱动程序在pdo_sqlite_handle_factory()中使用sqlite3_open(),但您需要sqlite3_open_v2()来传递只读标志。

编辑:
但补丁相当容易。看一下ext / pdo_mysql / mysql_driver.c中的pdo_mysql_handle_factory()以及它如何使用struct pdo_data_src_parser vars[]来解析dns字符串。