Собираем
информацию
по крупицам
Проекты / Код

Web-разработка

SQLite3 PDO драйвер для CodeIgniter
18-08-2010
16:47:13

Официальная страница / Official page

 

Драйвер PDO SQLite3 для CodeIgniter v.1.7.x.

 

Протестирован в CodeIgniter v.1.7.1 и v.1.7.2.

 

Требования: CodeIgniter 1.7.x

Последняя актуальная версия: 0.03 от 17.09.2010

Скачать: SQLite3 PDO Driver for CodeIgniter by Xintrea v.0.03

 

 

Установка:

 

1. Создаем директорию /pdo в директории /database/drivers, и копируем туда php-файлы из архива.

 

2. Создаем SQLite3 базу данных, и размещаем ее в нужной нам директории. Например я использую директорию [APPPATH]/db, файл называю base.db (то есть, путь к файлу - /application/db/base.db)

 

3. В файле [APPPATH]/config/database.php делаем следущие настройки:

 

...
$db['default']['hostname'] = '';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = 'sqlite:'.APPPATH.'db/base.db';
$db['default']['dbdriver'] = 'pdo';
...

 

Все, после этого можно использовать функции класса Database или Active Record для работы с базой данных.

 

Внимание! Если CodeIgniter настроен так, что данные сессии (session) хранятся в базе данных (а не в cookies), то путь к файлу базы нужно указывать абсолютный, то есть с корня. Например:

 

$db['default']['database'] = 'sqlite:/var/www/mysite/db/base.db';

 

Это связано с тем, что CI сбрасывает текущую директорию сразу после выполнения деструкторов контроллеров. А сохранение session-данных в базу происходит после завершения работы контроллеров. Поэтому, в момент сохранения сессионных данных, файл базы не может быть найден, если к нему задан относительный путь.

 

 

Где применяется этот драйвер?

 

На этом сайте (webhamster.ru) всегда установлена самая свежая версия драйвера. Несколько российских и зарубежных разработчиков также используют драйвер в своих проектах.

 

 

История создания

 

Использование SQLite3 в CodeIgniter всегда стояло особняком в обсуждениях разработчиков. С одной стороны, SQLite мало интересует профессиональных PHP-разработчиков. С другой стороны, какие-то библиотеки для работы с SQLite вроде бы и были, но находились в полурабочем состоянии.

 

Версия 0.01

 

В 2009 году я сделал PDO-драйвер для работы с SQLite3. Делал его, взяв за основу уже существующий класс CI_DB_pdo_driver. Вся работа заключалась в том, чтобы заставить данный класс работать с реалиями SQLite и исключить все ошибки, возникающие из-за особенностей взаимодействия с SQLite-базой. Когда ошибок не стало, и драйвер реально заработал, я его опубликовал (v.0.01).

 

Версия 0.02

 

В процессе работы выяснилось, что CodeIgniter по умолчанию для соединения с базой использует так называемое "персистентное" соединение. Но как показала практика, такой режим работы для файл-ориентированных баз неприемлем. А SQLite как раз является файл-ориентированной базой. Поэтому были сделаны небольшие исправления, и в 2010 году появилась версия 0.02.

 

Версия 0.03

 

Исправлен результат вызова метода $this->db->count_all_results(), так как подсчет общего количества строк в SQLite отличается от других популярных реализация SQL языка.

 

 

Известные проблемы

 

Драйвер не работает с LIKE функцией. То есть, конструкция вида

 

$this->db->like('title', 'match');

 

вызовет ошибку. Для использования SQL-оператора LIKE, можно использовать функцию ActiveRecords where(), например так:

 

$this->db->where("title LIKE '%match%'");

 

Пока не знаю, как решить эту проблему, ибо у меня мало опыта работы с SQL-ными базами данных.



К списку проектов

Поделиться этой страницей


https://керамаркет.рф керамогранит крым.

Статистика


RSS подписка

Подпишитесь на новости сайта по RSS


 WebHamster.Ru
 Домик любопытного хомячка
Яндекс индекс цитирования
Почтовый ящик