SQLite3类有这样的选项.
$db = new SQLite3('mysqlitedb.db', SQLITE3_OPEN_READONLY);
Run Code Online (Sandbox Code Playgroud)
在PDO中,您只需打开:
$db = new PDO('sqlite:mysqlitedb.db');
Run Code Online (Sandbox Code Playgroud)
我的问题是,有没有办法用READOLY模式打开PDO数据库?
随着 PHP 7.3 的发布(预计在 2018 年末发布),这将成为可能。
语法如下:
$db = new PDO('sqlite:mysqlitedb.db', null, null, [PDO::SQLITE_ATTR_OPEN_FLAGS => PDO::SQLITE_OPEN_READONLY]);
Run Code Online (Sandbox Code Playgroud)
我认为 pdo 不可能(还?)。
php 5.3 的 pdo_sqlite 驱动程序使用sqlite3_open(),但pdo_sqlite_handle_factory()
您需要 sqlite3_open_v2() 来传递只读标志。
编辑:
但是补丁会相当容易。查看pdo_mysql_handle_factory()
ext/pdo_mysql/mysql_driver.c 以及它如何用于struct pdo_data_src_parser vars[]
解析 dns 字符串。