Как открыть базу данных SQLite3, используя PDO?
Пример открытия файлов баз данных SQLite3 в PHP, используя расширение PDO: проверка наличия файла, особенности автоматического создание файла баз данных при его открытии, обработка исключений PDOException, атрибут режима сообщений об остальных ошибках (PDO::ATTR_ERRMODE).
Мы уже разобрались с проверкой доступности PDO SQLite, а значит можно попробовать открыть файл базы данных и посмотреть какие здесь подводные камни. А в том, что они есть — не сомневайтесь, я просто постараюсь дать вами оптимальный пример решение, остальное думайте сами.
Способ указания информации, необходимой для подключения к базе данных определяется спецификой выбранного PDO-драйвера. В общем виде DSN состоит из имени драйвера и параметров подключения, разделённых знаком «двоеточия».
В частности, имя PDO драйвера для SQLite2 — sqlite2, а для SQLite3 просто sqlite. В качестве параметра используется только путь и имя файла базы данных (например: sqlite:path/db.dqlite) или :memory:. Проблема в том, что при подключении к отсутствующему файлу базы данных не возникает ошибки: если его нет — он создаётся. Таким образом, проверку исключения делается потому, что так правильно, а вот функция file_exists() здесь очень даже пригодиться:
define('DB_FILENAME', 'path/filename.sqlite');
if( !file_exists(@DB_FILENAME) ) die('File '. DB_FILENAME .' not exists.');
else {
try {
$db = new PDO('sqlite:'. @DB_FILENAME);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
die($e->getMessage());
}
}Помимо прочего будет не лишним задать атрибут режима сообщений остальных ошибок PDO::ATTR_ERRMODE. Чтоб не заморачиваться ставьте PDO::ERRMODE_EXCEPTION — выбрасывать исключения.