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

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-ными базами данных.


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

Интересное на сайте


Программирование на C++ и Qt » Qt: как бороться с ошибкой "Point size <= 0 (0), must be greater than 0"

Многие, кто делает программы на фреймверке Qt 4.x, может натолкнутся на то, что запущенная программа в какой-то момент начинает сыпать бесконечными пр...


Qt » Нагрузочное тестирование MyTetra 1.42 на 100 000 записей

Введение   Пользователи MyTetra задают мне один и тот же вопрос: насколько много данных можно хранить в MyTetra, и как быстро она будет работать ...


Перевод документации Ext JS 4.2 » Ext JS 4.2. Часть 1: Введение

Здесь расположен мой авторский перевод официальной документации фреймверка Ext JS v.4.2 на русский язык. Для перевода были выбраны основные стать...

RSS подписка

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

Поделиться



http://ooogeodeziya.su/ межевой план по образованию части земельного участка.

Внимание!


На этом сайте разрабатывается программа MyTetra и её родственные проекты. Доступны к просмотру следующие базы знаний:

 

База Xintrea (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)

База Rarrugas (1, 2)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

База Anatolean

База Аrmagedec

База SorokinRed

База Deadelf79

База Fadk

 

Требуют доработки:

 

База Tairesh

База Ivnglkv

База Kolyag87

База Andyk101

База Garik456456

База Harpokrat

База SalexIzyh

База Duwaz

 

Подробности на странице MyTetra Share.

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