【发布时间】:2009-08-29 20:13:02
【问题描述】:
SQLite3 类有一个这样的选项。
$db = new SQLite3('mysqlitedb.db', SQLITE3_OPEN_READONLY);
在 PDO 中,您只需打开:
$db = new PDO('sqlite:mysqlitedb.db');
但是,我的问题是,有没有办法在 READONLY 模式下使用 PDO 打开数据库?
【问题讨论】:
SQLite3 类有一个这样的选项。
$db = new SQLite3('mysqlitedb.db', SQLITE3_OPEN_READONLY);
在 PDO 中,您只需打开:
$db = new PDO('sqlite:mysqlitedb.db');
但是,我的问题是,有没有办法在 READONLY 模式下使用 PDO 打开数据库?
【问题讨论】:
随着 PHP 7.3 的发布(预计在 2018 年底发布),这将成为可能。
语法如下:
$db = new PDO('sqlite:mysqlitedb.db', null, null, [PDO::SQLITE_ATTR_OPEN_FLAGS => PDO::SQLITE_OPEN_READONLY]);
【讨论】:
我认为 pdo 不可能(还没有?)。
php 5.3 的 pdo_sqlite 驱动程序在 pdo_sqlite_handle_factory() 中使用 sqlite3_open() 但您需要 sqlite3_open_v2() 来传递只读标志。
编辑:
但是补丁会相当容易。看看 ext/pdo_mysql/mysql_driver.c 中的 pdo_mysql_handle_factory() 以及它如何使用 struct pdo_data_src_parser vars[] 来解析 dns 字符串。
【讨论】: