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