Как открыть базу данных 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
— выбрасывать исключения.