Открытие SQLite3 как READONLY с PDO?
В классе SQLite3 есть такой вариант.
$db = new SQLite3('mysqlitedb.db', SQLITE3_OPEN_READONLY);
В PDO вы просто откроете с помощью:
$db = new PDO('sqlite:mysqlitedb.db');
Мой вопрос, однако, есть способ открыть базу данных с PDO в режиме READONLY?
Ответы
Ответ 1
Я не думаю, что это возможно с pdo (еще?).
Драйвер pdo_sqlite для php 5.3 использует 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.
Ответ 2
Это станет возможным благодаря выпуску PHP 7.3 (рассчитанный для выпуска в конце 2018 года).
Синтаксис синтаксиса выглядит следующим образом:
$db = new PDO('sqlite:mysqlitedb.db', null, null, [PDO::SQLITE_ATTR_OPEN_FLAGS => PDO::SQLITE_OPEN_READONLY]);
Upstream commit