2009-08-29 4 views
10

SQLite3 클래스에는 이와 같은 옵션이 있습니다.PDO에서 READ ONLY로 SQLite3을여시겠습니까?

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

당신 것와 단순히 개방 :

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

내 질문은 PDO와 데이터베이스를 열 수있는 방법 읽기 전용 모드에서,이, 그러나입니까?

답변

2

나는 pdo (아직?)로는 불가능하다고 생각합니다.
PHP 5.3의 pdo_sqlite 드라이버는 을 pdo_sqlite_handle_factory()에서 사용하지만 읽기 전용 플래그를 전달하려면 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