2009-08-29 67 views
10

SQLite3類有一個像這樣的選項。用PDO打開SQLite3爲READONLY?

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

在PDO您只需將開放:

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

我的問題是但是,有沒有辦法打開與PDO的數據庫,以只讀模式?

回答

2

我不認爲這是可能的與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字符串。

2

隨着PHP 7.3的發佈(預計於2018年底發佈),這將成爲可能。

帖語法如下:

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

Upstream commit