- PVSM.RU - https://www.pvsm.ru -
Доброе время суток всем!
Как обещал ранее [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
Нажмите здесь для печати.