Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

DbPrimitive: ну-очень-легковесная альтернатива DbSimple (Юрий Насретдинов)
Author Message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed Apr 22, 2009 11:42 pm (написано за 12 минут 14 секунд)
   Post subject: DbPrimitive: ну-очень-легковесная альтернатива DbSimple
Reply with quote

DbPrimitive -- Очень простенькая библиотека для работы с базой данных, которую я использую практически без изменений уже в течение 5 лет. В файле с библиотекой всего около 150 строк кода (за исключением 60 строк комментариев), но она поддерживает плейсхолдеры и содержит некоторые другие очень полезные методы.

Примеры:
Code (php): скопировать код в буфер обмена
$SQL = new DbPrimitive();

$MYSQL_CONFIG = array (www.php.net/array)( 'host' => 'localhost', 'user' => 'root', 'pass' => '', 'db' => 'some_db', 'prefix' => 'someprefix' );

$SQL->connect(); // в случае ошибки выполнение скрипта будет сразу же прекращено и будет выведено сообщение об ошибке

...

// в случае ошибки любого из запросов, работа скрипта незамедлительно прерывается и выдается сообщение об ошибке
// если Вы не хотите, чтобы ошибка конкретного запроса приводила к завершению скрипта, поставьте перед ним собачку
$SQL->qw('INSERT INTO ??_users SET `name` = ?, `email` = ?, `registration_date` = ?', $_GET['name'], $_GET['email'], time (www.php.net/time)());

...

// если задан префикс базы данных в глобальном массиве $MYSQL_CONFIG, "??" будет заменено на префикс базы данных

if(!@$SQL->qw('INSERT INTO ??_ip_list SET `ip` = ?, `hits` = 1', $_SERVER['REMOTE_ADDR']))
{
        $SQL->qw('UPDATE ??_ip_list SET `hits`=`hits`+1 WHERE `ip`=?', $_SERVER['REMOTE_ADDR']);
}

...

if(sizeof (www.php.net/sizeof)($iplist))
{
        $sel = $SQL->qw('SELECT * FROM ??_ip_list WHERE `ip` IN(?)', $iplist /* iplist = array('127.0.0.1', '192.168.0.1', ...) */);
       
        while( $res = $SQL->fetch_assoc($sel) ) ...;
}

...

// функция res() делает запрос и получает первую строчку результата с помощью fetch_assoc
$data = $SQL->res( 'SELECT * FROM ??_ip_list WHERE `id` = ?', $_GET['id'] );

...

echo (www.php.net/echo) 'Статистика MySQL: '.declension( $SQL->queries, 'запрос запроса запросов' ).' за '.round($SQL->sqltime,5).' сек';



DbPrimitive.php.zip
 Description:
Файл с библиотекой.

Лицензия: запрещается продавать библиотеку, если только она не находится в составе других продуктов. Также запрещается задавать лично мне вопросы по поводу того, что такое MySQL, как делать SQL-запросы, и прочие вопросы по основам р

Download
 Filename:  DbPrimitive.php.zip
 Filesize:  2.16 KB
 Downloaded:  505 Time(s)

Back to top
View user's profile Send private message Send e-mail
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Wed May 13, 2009 3:56 pm (спустя 20 дней 16 часов 13 минут; написано за 12 секунд)
   Post subject:
Reply with quote

Юрий Насретдинов wrote:
$SQL->qw
аки перл, прямо (-;
Back to top
View user's profile Send private message
chikey.ru
Заглянувший



Joined: 22 Feb 2009
Posts: 6
Карма: 0
   поощрить/наказать

Location: Саранск

PostPosted: Wed May 27, 2009 11:57 am (спустя 13 дней 20 часов 1 минуту; написано за 48 секунд)
   Post subject:
Reply with quote

очень понравилось)
имхо префикс надо так делать
INSERT INTO ??ip_list SET `ip` =

а _ в самом префиксе объявить.

спасибо за класс=)
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed May 27, 2009 1:14 pm (спустя 1 час 16 минут; написано за 40 секунд)
   Post subject:
Reply with quote

chikey.ru wrote:
имхо префикс надо так делать
INSERT INTO ??ip_list SET `ip` =

а _ в самом префиксе объявить.
Не очень понял, приведите пример, пожалуйста.
chikey.ru wrote:
очень понравилось)
Спасибо
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML