- PVSM.RU - https://www.pvsm.ru -

Эмулятор PEAR DB средствами PDO с некоторым расширением функционала или простая надстройка над PDO

Доброе время суток всем!
Как обещал ранее [1], а также по просьбе некоторых пользователей хабра выкладываю в сеть новый вариант эмулятора PEAR DB сделанный на основе PDO и успешно работающий с новыми версиями PHP. Скачать можно здесь (из раздела Code, ветка trunk) [2] или здесь [3], а также используя snv
так: svn checkout svn://svn.code.sf.net/p/peardb2pdo/code/trunk peardb2pdo-code
или так: svn checkout svn.code.sf.net/p/peardb2pdo/code/trunk [4] peardb2pdo-code

При желании код можно взять за основу при создании новых проектов где не хочется использовать тяжеловесные надстройки над базой.

Лицензия: GNU General Public License [5].

Далее подробнее ...

Как написано в заголовке, все переписано под PDO и рассчитано на работу с последними версиях PHP.
Код тестировался на одном (пока не завершенном) проекте. Работает вроде нормально. Пара функций специфична для MySQL но при желании от специфики можно избавиться (см. свойство класса $server). Добавлена возможность параметризированных запросов ну и прочие мелочи которые будут понятны из примеров ниже и кода класса, думаю любой разберётся. Пожелания и поправки приветствуются. Судя по отклику на первую статью проблема «соскока» с PEAR DB актуальна. Возможно стоило ещё потестировать и отполировать но люди торопят, просят скорее выложить, потому предлагаю сделать это вместе с теми кому это интересно и нужно.

Замечания/предложения/правки просьба в личку или в дискуссию [6] на страничке проекта с кусками кода который на Ваш взгляд стоит поправить или дополнить.

Далее несколько примеров:

1.Подключение

require_once 'includes/classes/classERROR.php'; 
require_once 'includes/classes/classMYSQLPDO.php';
$db = new DB();

$show_errors = false;
$stop_after_error = false;
$on_error_rollback = true;

if(!$db->connect('localhost','user','pass',	'database','table_preffix_',$show_errors ,					$stop_after_error,	$on_error_rollback ))
						{
							echo "DB Connect Error!";
							exit();
						}

2. Параметризованный запрос — Вариант 1:

$params['person_id']=array('57FA56C2',8);
$params['nickname']=array('USER',5);
print_r($db->getAll("select * from persons WHERE person_id=:person_id and nickname=:nickname",$params));
echo "  Число полей: ".$db->fcount();
echo "  Число записей: ".$db->rcount();

// Повтор запроса с другими параметрами

$params['person_id']=array('2457A5F',8);
$params['nickname']=array('ADMIN',6);
print_r($db->repeat($params));
echo "  Число полей: ".$db->fcount();
echo "  Число записей: ".$db->rcount();

3. Параметризованный запрос — Вариант 2:

print_r($db->getRow("select * from persons WHERE person_id=? LIMIT 1",array('57FD56C2')));
echo "  Число полей: ".$db->fcount();

Параметр: $alias в функциях позволяет разделить SQL запросы на сессии (для случаев когда необходимо комбинировать несколько параметризированных запросов напр. в одном цикле (дабы не происходило смешивание параметров и результатов выполнения некоторых функций).

Надеюсь не сильно всех утомил. Остальные возможности вполне очевидны и понятны из кода. Просьба сильно не пинать а при желании помочь довести код до ума т.к. потребность в нём, судя по письмам с просьбой выложить, реально есть и люди торопят. В случае обнаружения ошибок просьба уведомить автора.

Спасибо за внимание. Надеюсь кому то помог. Если нет то просто посмотрите мои фотки :) там [7] это поможет побороть расслабиться и забыть :)
с Уважением Михаил Червоненко/Mikhail Tchervonenko.

п.с. Класс обработки ошибок выложен в старом варианте со всеми недостатками, до него руки пока не дошли и возможно в скором будующем не дойдут (лично меня он устраивает в таком варианте как есть). Не вижу особой нужды что то в нем менять но если кто то его улучшит с радостью выложу его в проекте.

Автор: RusMikle


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/mysql/6486

Ссылки в тексте:

[1] ранее: http://habrahabr.ru/post/135654/

[2] здесь (из раздела Code, ветка trunk): http://sourceforge.net/projects/peardb2pdo/

[3] здесь: http://sourceforge.net/projects/peardb2pdo/files/

[4] svn.code.sf.net/p/peardb2pdo/code/trunk: http://svn.code.sf.net/p/peardb2pdo/code/trunk

[5] GNU General Public License : http://ru.wikipedia.org/wiki/GNU_General_Public_License

[6] дискуссию: http://sourceforge.net/p/peardb2pdo/discussion/general/

[7] там: http://club.foto.ru/gallery/photos/author.php?sort=comments&author_id=31143