Класс SQLite3 имеет такую опцию.
$db = new SQLite3('mysqlitedb.db', SQLITE3_OPEN_READONLY);
В PDO вы просто открываете:
$db = new PDO('sqlite:mysqlitedb.db');
Мой вопрос, однако, есть ли способ открыть базу данных с помощью PDO в режиме READONLY?
Это станет возможным с выпуском PHP 7.3 (ориентировочно для выпуска в конце 2018 года).
Синтаксис следующий:
$db = new PDO('sqlite:mysqlitedb.db', null, null, [PDO::SQLITE_ATTR_OPEN_FLAGS => PDO::SQLITE_OPEN_READONLY]);
коммит вверх по течению
Я не думаю, что это возможно с pdo (пока?). Драйвер pdo_sqlite в php 5.3 использует sqlite3_open () in pdo_sqlite_handle_factory(), но вам нужно sqlite3_open_v2 (), чтобы передать флаг только для чтения.
pdo_sqlite_handle_factory()
редактирование: Но патч будет довольно легко. Взгляните на pdo_mysql_handle_factory() в ext / pdo_mysql / mysql_driver.c и на то, как он использует struct pdo_data_src_parser vars[] для анализа строки DNS.
pdo_mysql_handle_factory()
struct pdo_data_src_parser vars[]