2009-08-29 13 views
10

Klasa SQLite3 ma taką opcję.Otwieranie SQLite3 jako READONLY z PDO?

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

W PDO byś po prostu otwarte:

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

Moje pytanie brzmi jednak, czy jest jakiś sposób, aby otworzyć bazę danych z PDO, w trybie tylko do odczytu?

Odpowiedz

2

Nie sądzę, że jest to możliwe z pdo (jeszcze?).
Sterownik pdo_sqlite dla PHP 5.3 używa sqlite3_open() w pdo_sqlite_handle_factory(), ale potrzebujesz sqlite3_open_v2(), aby przekazać flagę tylko do odczytu.

edycja:
Ale łatka byłaby dość łatwa. Spójrz na pdo_mysql_handle_factory() w ext/pdo_mysql/mysql_driver.c i jak używa on struct pdo_data_src_parser vars[] do parsowania ciągu dns.

2

Będzie to możliwe dzięki wydaniu PHP 7.3 (którego wydanie planowane jest na koniec 2018 r.).

składni Tes jest następujący:

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

Upstream commit