Открытие SQLite3 как ЧТЕНИЕ с PDO? - PullRequest
11 голосов
/ 30 августа 2009

Класс SQLite3 имеет такую ​​опцию.

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

В PDO вы просто открываете:

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

Мой вопрос, однако, есть ли способ открыть базу данных с помощью PDO в режиме READONLY?

Ответы [ 2 ]

3 голосов
/ 12 сентября 2017

Это станет возможным с выпуском PHP 7.3 (ориентировочно для выпуска в конце 2018 года).

Синтаксис следующий:

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

коммит вверх по течению

2 голосов
/ 30 августа 2009

Я не думаю, что это возможно с pdo (пока?).
Драйвер pdo_sqlite в php 5.3 использует sqlite3_open () in pdo_sqlite_handle_factory(), но вам нужно sqlite3_open_v2 (), чтобы передать флаг только для чтения.

редактирование:
Но патч будет довольно легко. Взгляните на pdo_mysql_handle_factory() в ext / pdo_mysql / mysql_driver.c и на то, как он использует struct pdo_data_src_parser vars[] для анализа строки DNS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...