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

DbSimple v2.x: лаконичная работа с различными СУБД (Дмитрий Котеров, оценка: 10)
Goto page Previous  1, 2, 3 ... 10, 11, 12, 13, 14, 15  Next
Author Message
TUMS
Заглянувший



Joined: 09 Apr 2005
Posts: 5
Карма: 0
   поощрить/наказать


PostPosted: Tue Aug 04, 2009 3:36 pm (написано за 4 секунды)
   Post subject:
Reply with quote

Code (php): скопировать код в буфер обмена
Deprecated: Assigning the return value of new by reference is deprecated in D:\wamp\www\libs\DbSimple\Generic.php on line 113

Deprecated: Assigning the return value of new by reference is deprecated in D:\wamp\www\libs\DbSimple\Generic.php on line 133

Deprecated: Assigning the return value of new by reference is deprecated in D:\wamp\www\libs\DbSimple\Mysql (www.php.net/mysql).php on line 70
Вот и хотелось бы спросить - будет ли обновлен DbSimple в свете выхода PHP 5.3.0? :)
Back to top
View user's profile Send private message
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Tue Aug 04, 2009 4:42 pm (спустя 1 час 5 минут; написано за 2 минуты 12 секунд)
   Post subject:
Reply with quote

TUMS
скорее всего нет - автор похоже забросил это все

Last modification: Rev 247 - 2008-08-18 21:17:08 GMT

Есть обновленный DbSimple - в составе движка sourceforge.net/projects/quickfw/
Там добавлена новая функциональность и совместимость с php 5.3 - по крайне мере не ругается
также забил на совместимость с mysql3 и php4 потому как это уже такая древность :)
Back to top
View user's profile Send private message Send e-mail
TUMS
Заглянувший



Joined: 09 Apr 2005
Posts: 5
Карма: 0
   поощрить/наказать


PostPosted: Tue Aug 04, 2009 6:16 pm (спустя 1 час 34 минуты; написано за 1 минуту 49 секунд)
   Post subject:
Reply with quote

Ivan1986 отдельной доки по нему, я так понимаю, не имеется... чтож, будем ковырять :(
Quote:
 * Use static DbSimple_Generic::connect($dsn) call if you don't know
 * database type and parameters, but have its DSN.
Quote:
Fatal error: Class 'DbSimple_Generic' not found
Забавненько =)


*пошел копать в сторону pdo...*
Back to top
View user's profile Send private message
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Wed Aug 05, 2009 4:11 pm (спустя 21 час 54 минуты; написано за 1 минуту 34 секунды)
   Post subject:
Reply with quote

TUMS
По нему вообще доки нету - программа замечательно документирована на языке PHP

Есть файлик AutoDbSimple.php - там есть пулл коннектов и ленивая инициализация
Кстати там есть драйвер для работы через PDO

Ну а уж
Quote:
 * Use static DbSimple_Generic::connect($dsn) call if you don't know
 * database type and parameters, but have its DSN.
извиняюсь, забыл я про это.
Чтож, спасибо, исправлю комментарий.
Back to top
View user's profile Send private message Send e-mail
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Wed Aug 05, 2009 4:21 pm (спустя 10 минут; написано за 1 минуту 22 секунды)
   Post subject:
Reply with quote

TUMS
да, хочу добавить что копать в сторону PDO очень не советую, лучше немного посмотрите код этого - вообще весь движок довольно удобный по части юзания, и довольно активно развивается, если там находится что туда можно добавить :)
Back to top
View user's profile Send private message Send e-mail
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9987
   поощрить/наказать


PostPosted: Fri Aug 21, 2009 2:12 pm (спустя 15 дней 21 час 51 минуту)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «вопрос различия php4 и php5»,
расположенную в форуме Лень сходить в Поиск или почитать документацию (21 Августа 2009, 15:12).
Back to top
View user's profile Send private message
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Fri Sep 11, 2009 1:09 am (спустя 20 дней 10 часов 57 минут; написано за 8 минут 33 секунды)
   Post subject:
Reply with quote

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

PDO (mysql и sqlite3), sqlite2
мультиинсерт (?a и двумерный массив в "('1','2','3') ('4','5','6') ..."
разворот двумерных массивов в группы условий AND и OR
поддержка плейсхолдера ?s - подзапрос с проверкой типов, тоесть неэкранированные данные вставить нельзя, а кусок запроса с подстановкой параметров можно
поддержка конструкций {? .... } - условная вставка и { ... | ... } - аналог else
ленивая инициализация - коннект к базе только при первом запросе - реализовано классом оберткой

не знаю насколько это будет недостатком, но на поддержку php4 забил, так как давно не видел нигде, да и не поддерживается.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Mon Oct 05, 2009 6:24 pm (спустя 24 дня 17 часов 15 минут; написано за 15 минут 11 секунд)
   Post subject: Re: DbSimple v2.x: лаконичная работа с различными СУБД
Reply with quote

Доброго времени суток.
Недавно прочел вашу книгу(php5), и решил пользоваться DbSimple, но возникла проблема в правильной установке..
Code (php): скопировать код в буфер обмена
<?
//
//
$res = $DB->select('SELECT id FROM table WHERE category=?', $a);
echo (www.php.net/echo) $res;
?>
Выводит на экран просто "Array" без ковычек...

Расскажите, пожалуйста как правильно инсталлировать DbSimple.
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Mon Oct 05, 2009 6:38 pm (спустя 13 минут; написано за 3 минуты 15 секунд)
   Post subject:
Reply with quote

Гость
простите, с какого ... вы решили что ваша проблема в DbSimple?
Может вам стоит почитать эту ... документацию по оператору echo и узнать, как ... он работает с массивами.
Посмотрите в сторону функций var_dump и print_r.


ЗЫ: Ауу, как насчет патчей? Как оформить, кому прислать, нужны ли они кому-то?
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Mon Oct 05, 2009 7:02 pm (спустя 24 минуты; написано за 5 минут 57 секунд)
   Post subject:
Reply with quote

Ivan1986 wrote:
Ivan1986
Гость
Прошу прощения, за мою невнимательность.. Далее буду внимательнее читать. спутал select и selectcell.

и все же остался вопрос с подключением библиотеки:
подключение библиотеки ведется подключением Generic.php и Config.php на каждой странице или существует другой способ?
В заранее простите за глупые вопросы, я еще только начинаю изучение php...
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Mon Oct 05, 2009 9:17 pm (спустя 2 часа 14 минут; написано за 3 минуты 58 секунд)
   Post subject:
Reply with quote

Гость wrote:
подключением Generic.php и Config.php на каждой странице
если страница не подключается сама чем-то (общим контроллером, или роутером), то обычно она подключает ( require_once ) только некий общий лоадер, в котором уже прописаны подключения всех общих библиотек, создание общих объектов (интерфейс к базе, система кэширования, шаблонизатор). Это избавляет от необходимости править множество страниц при добавлении новой библиотеки.
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Mon Oct 05, 2009 9:18 pm (спустя 1 минуту 7 секунд; написано за 18 секунд)
   Post subject:
Reply with quote

Ivan1986
напишите ДК в ЛС - может, он просто пропустил Ваше сообщение
Back to top
View user's profile Send private message
Artyom_06.10.09
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Oct 06, 2009 7:35 pm (спустя 22 часа 17 минут; написано за 4 минуты 41 секунду)
   Post subject:
Reply with quote

Вечер добрый!

Скачал DbSimple, простота использования, правильная логика просто удивили. Библиотека супер, респект авторам за такую затею.

Немного огорчила новость, или скорее "слух" о том, что DbSimple продолжения банкета не видать, правда ли это?
Если это так, возможна ли какая-либо платная, обновленная версия?
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Tue Oct 06, 2009 10:40 pm (спустя 3 часа 4 минуты; написано за 3 минуты 25 секунд)
   Post subject:
Reply with quote

Artyom_06.10.09
Если вы посмотрите выше на этой странице, то увидите, что обновленная версия есть в моем фреймворке, если получится, то отправлю патчи в репозиторий DkLab. Пока есть на sf.net - работает просто замечательно, буквально сегодня ?a с мультиинсертом протестили жестко - довольно просто рали кучу запросов в один. Пока даже не знаю что туда еще добавить - все что мне не хватало добавил.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Oct 07, 2009 9:11 pm (спустя 22 часа 31 минуту; написано за 7 минут 5 секунд)
   Post subject:
Reply with quote

пытался найти способ как выполнить сл запрос:
Code (php): скопировать код в буфер обмена
$sql_connect=mysql_connect (www.php.net/mysql_connect)($dbhost, $dbuser, $dbpass);

$q=mysql_query (www.php.net/mysql_query)("SELECT * FROM $table where a=b...");
        while ($sql_connect=mysql_fetch_object (www.php.net/mysql_fetch_object)())
        {       
       
$id = $sql_connect->id;
$name = $sql_connect->name;

echo (www.php.net/echo) "User_id:".$id."&nbsp;User_name:".$name;
        }
Но так нормального способа и не нашел.. помогите, пожалуйста.
 В заранее огромное спасибо!
Back to top
Юрий Насретдинов
Модератор



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

Location: 007 495

PostPosted: Wed Oct 07, 2009 9:20 pm (спустя 8 минут; написано за 26 секунд)
   Post subject:
Reply with quote

Гость
Как такой запрос конкретно-то? А то из
Гость wrote:
SELECT * FROM $table where a=b...
Не очень понятно, что скрывается за троеточием.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Oct 07, 2009 9:30 pm (спустя 10 минут; написано за 12 секунд)
   Post subject:
Reply with quote

Юрий Насретдинов
любое условие.
Back to top
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Oct 07, 2009 9:50 pm (спустя 19 минут; написано за 1 минуту 31 секунду)
   Post subject:
Reply with quote

Гость
Могу сформулировать и по другому:
Как сделать запрос через DbSimple, чтобы имена полей в БД можно было получить в виде переменной со значением(т.е. поле ID со значением '01' в базе данных, равно переменной $id со значением "01")
и вывести все поля.

через mysql_fetch_object это можно сделать сл образом:

while ($sqlc=mysql_fetch_object($q))
{
$id=$sqlc->id;
$name=$sqlc->name;
echo "ID=".$id."NAME=".$name"<br>";
}
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Wed Oct 07, 2009 11:25 pm (спустя 1 час 34 минуты; написано за 45 секунд)
   Post subject:
Reply with quote

Гость
Вы руководство к библиотеке читали? Судя по всему - нет.
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Thu Oct 08, 2009 9:27 am (спустя 10 часов 2 минуты; написано за 1 минуту 25 секунд)
   Post subject:
Reply with quote

Maus

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

а с DbSimple я нашел только один способ:

$ROW=$DB->selectcol('SELECT id FROM ?_tabl');
$res=$DB->selectc('SELECT id AS ARRAY_KEY, name, login FROM ?_tabl');

for ($i=0;$i<count($ROW); $i++)
{
echo "name:".$res[$i]['name']."<br>Login:".$res[$i]['login'];
}
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Oct 08, 2009 3:37 pm (спустя 6 часов 9 минут; написано за 26 минут 32 секунды)
   Post subject:
Reply with quote

Гость
окей, тогда с самого начала
Гость wrote:
чтобы имена полей в БД можно было получить в виде переменной со значением
имелось в виду "значение полей", но из примера вопрос ясен.
Предполагаю, что Вы уже знакомы с двумя типами массивов - список и хэш (ассоциативный массив)
$DB->select() возвращает Вам список хэшей. То есть:
Code (php): скопировать код в буфер обмена
$rows = $DB->select('#  #');
//
//
foreach($rows as $row) {
    //
    echo (www.php.net/echo) "{$row['id']}: {$row['name']} / {$row['login']}<br />";
    //
}
Касательно Вашего вопроса: чтобы получить именно переменные, можно действовать так:
Code (php): скопировать код в буфер обмена
$rows = $DB->select('SELECT `id`, `name`, `login` FROM ...');
foreach($rows as $row) {
    extract (www.php.net/extract)($row); //
}
Но так делать не рекомендуется, потому что это неудобно:
а) как во множестве локальных переменных выделить именно те, что содержат значения из запроса?
б) получение имен столбцов становится непростой задачей, а для массива можно было сделать просто:
Code (php): скопировать код в буфер обмена
$column_names = array_keys (www.php.net/array_keys)($rows[0]);
Библиотека DBSimple является слоем абстракции от БД - из этого следует, что применение нативных функций (mysql_query) вместе с ней - неправильно.
Например, вот совершенно неверный код:
Code (php): скопировать код в буфер обмена
$res = $DB->query('SELECT ...');
/*
while ($row = $DB->selectRow($res) ) {}
/*
selectCol(), selectRow() сделаны для упрощения жизни: Примеры для каждого: раз:
Code (php): скопировать код в буфер обмена
$query = 'SELECT `id` FROM ...';
$rows = $DB->select($query);
$col = array (www.php.net/array)();
foreach ($rows as $row)
{
    $col[] = $row['id'];
}

//
$col = $DB->selectCol($query);
и два:
Code (php): скопировать код в буфер обмена
$query = 'SELECT * FROM ...';
$rows = $DB->select($query);
// выборка может быть пустой
$row = empty (www.php.net/empty)($row) ? array (www.php.net/array)() : $rows[0];
// освободить память
unset (www.php.net/unset)($rows);
// то же самое, но куда лаконичнее и быстрее
$row = $DB->selectRow($query);
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Thu Oct 08, 2009 4:07 pm (спустя 29 минут; написано за 57 секунд)
   Post subject:
Reply with quote

Maus,
низкий поклон и ОГРОМНАЯ БЛАГОДАРНОСТЬ! Спасибо за столь пояснительный ответ!
респект DKlab.
Back to top
vts
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Oct 13, 2009 12:16 am (спустя 4 дня 8 часов 9 минут; написано за 6 минут 20 секунд)
   Post subject: завершение работы mysql_free_result и mysql_close
Reply with quote

подскажите, а то не нашел (может плохо искал)
например создали соединение с БД
Code (php): скопировать код в буфер обмена
require_once "DbSimple/Generic.php";
$DB = DbSimple_Generic::connect("mysql://login:password@host/database");
выполнили sql запрос, получили нужные данные:
- как освободить результирующую память? ( например выполнить mysql_free_result( $rs ); )
- как закрыть MySQL-соединение? ( на пример вызвать mysql_close( $mysql_link ); )
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Tue Oct 13, 2009 3:08 am (спустя 2 часа 51 минуту; написано за 39 секунд)
   Post subject:
Reply with quote

vts
после завершения работы скриптов ресурсы освобождаются автоматически.
Back to top
View user's profile Send private message
vts
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Oct 27, 2009 5:30 pm (спустя 14 дней 14 часов 22 минуты; написано за 3 минуты 51 секунду)
   Post subject: AS ARRAY_KEY AS PARENT_KEY
Reply with quote

Добрый день.
подскажите по получению древовидной структуры.
из документации
Code (php): скопировать код в буфер обмена
$forest = $DB->select('SELECT user_id AS ARRAY_KEY, parent_id AS PARENT_KEY, *   FROM ?_users ');
берет все дерево, а как взять такую же информацию только для любого узла дерева ?

форум читал, поиск юзал - нашел не то что хотел.
Back to top
Юрий Насретдинов
Модератор



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

Location: 007 495

PostPosted: Tue Oct 27, 2009 5:54 pm (спустя 24 минуты; написано за )
   Post subject:
Reply with quote

Наверное, добавить дополнительное условие в where?
Back to top
View user's profile Send private message Send e-mail
vts
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Oct 27, 2009 6:03 pm (спустя 8 минут; написано за 4 минуты 33 секунды)
   Post subject: AS ARRAY_KEY AS PARENT_KEY
Reply with quote

Юрий Насретдинов wrote:
Наверное, добавить дополнительное условие в where?
если не трудно подскажите какое ?
вот мой код
Code (php): скопировать код в буфер обмена
$forest = $cmsot_db->select('
  SELECT
    cat.cat_id  AS ARRAY_KEY,
    cat.cat_pid  AS PARENT_KEY,
    cat.*
   FROM ?_pages_categories cat
     WHERE cat.cat_id = 4   
'
);
добавляю строку WHERE cat.cat_id = 4
но в таком случае childNodes = array() получается пустой массив
но если выкинуть из запроса WHERE cat.cat_id = 4 получаем все дерево и для cat_id = 4 childNodes не пустое
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Tue Oct 27, 2009 10:11 pm (спустя 4 часа 7 минут; написано за 2 минуты)
   Post subject:
Reply with quote

Кстати очень хороший вопрос, какое условие поставить :)

так как для выборки этой категории cat.cat_id = 4, для выбора всех дочерних категорий cat.cat_pid = 4
а вот для выборки следующих подуровней...

тоесть получается, что (cat.cat_id = 4 OR cat.cat_pid = 4 OR ? )
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



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

Location: 007 495

PostPosted: Tue Oct 27, 2009 11:31 pm (спустя 1 час 20 минут; написано за 22 секунды)
   Post subject:
Reply with quote

vts
Если Вы используете nested sets, то условие понятно, какое. А если нет, то одним запросом Вам сразу все уровни не достать...
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Mon Nov 09, 2009 4:49 pm (спустя 12 дней 17 часов 18 минут; написано за 6 минут 39 секунд)
   Post subject:
Reply with quote

Доброго всем времени суток!

Столкнулся с интересным и непонятным для меня явлением (скорее всего в силу моего гриппозного состояния - голова варит максимум на 50%)

Начал обновлять один из старых проектов. Под обновление попал Smarty, была взята бета Smarty 3

и php выдало:
Quote:
Fatal error: Uncaught exception 'LogicException' with message 'Class DbSimple_Mysql could not be loaded' in /usr/home/cris/www/shared/lib/DbSimple/Generic.php:95
Stack trace:
    #0 /usr/home/cris/www/shared/lib/DbSimple/Generic.php(95): spl_autoload('DbSimple_Mysql')
    #1 /usr/home/cris/www/htdocs/xepace.net/s/init.php(49): DbSimple_Generic::connect('DbSimple_Mysql')
    #2 /usr/home/cris/www/htdocs/xepace.net/s/index_php_template.php(7): require('/usr/home/cris/...')
    #3 {main} thrown in /usr/home/cris/www/shared/lib/DbSimple/Generic.php on line 95
... немного покопал и, при содействии HackerConsole, выяснил, что при инициализации Smarty копается в include_path и добавляет туда новую запись:
Quote:
INC:
.:/usr/local/share/pear:/usr/home/cris/www/shared/lib
.:/usr/local/share/pear:/usr/home/cris/www/shared/lib:/usr/home/cris/www/shared/lib/Smarty-3/libs/sysplugins/
... после чего DbSimple и перестаёт грузиться нормально... =(

Честно говоря, я, лично, сути проблемы сейчас понять не могу, поэтому и обращаюсь к вашему мнению...

Если инициализировать DbSimple до Smarty - всё отлично работает...
Back to top
rs08
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Nov 17, 2009 4:43 pm (спустя 7 дней 23 часа 53 минуты; написано за 1 минуту 11 секунд)
   Post subject:
Reply with quote

Приветствую!
Не подскажете, библиотека поддерживает исполнение хранимых процедур возвращающих набор строк таблицы?
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Tue Nov 17, 2009 5:21 pm (спустя 38 минут; написано за 1 минуту 32 секунды)
   Post subject:
Reply with quote

rs08
да, если использовать драйвер PDO или mysqli (второго я не видел, PDO есть в моих патчах)
стандартный драйвер не поддерживает хранимые процедуры, ну по крайне мере в PHP ниже 5.3
Back to top
View user's profile Send private message Send e-mail
Дмитрий Герасимов
Заглянувший



Joined: 04 Oct 2008
Posts: 13
Карма: 6
   поощрить/наказать

Location: Санкт-Петербург

PostPosted: Sat Nov 28, 2009 3:44 pm (спустя 10 дней 22 часа 22 минуты; написано за 1 минуту 1 секунду)
   Post subject: Способ реализации множественной вставки в таблицу (мультиинсерт)
Reply with quote

Здравствуйте.
Хочу поделиться решением, как можно при помощи DBSimple реализовать множественную вставку в таблицу.
Итак, требуется вставить в таблицу t несколько строк за один запрос.

На языке DBSimple, в конечном виде, запрос должен выглядеть примерно так
Code (SQL): скопировать код в буфер обмена
INSERT INTO t (?#) VALUES (?a),(?a), ...
 
Данные хранятся в ассоциативном массиве $data
Code (php): скопировать код в буфер обмена
$data = array (www.php.net/array)(
    array (www.php.net/array)(
        'a' => 111,
        'b' => 234,
        'c' => NULL,
    ),
    array (www.php.net/array)(
        'a' => 100,
        'b' => 456,
        'c' => 'text',
    ),
    ...
);
Всё, что необходимо - это соблюсти одинаковое количество и одинаковый порядок следования полей (это каждый может сделать по-своему)

Теперь вставка.
Code (php): скопировать код в буфер обмена
call_user_func_array (www.php.net/call_user_func_array)(
    array (www.php.net/array)($DB, 'query'),
    array_merge (www.php.net/array_merge)(
        array (www.php.net/array)(
            'INSERT INTO t (?#) VALUES ' . implode (www.php.net/implode)(', ', array_fill (www.php.net/array_fill)(0, count (www.php.net/count)($data), '(?a)')),
            array_keys (www.php.net/array_keys)(reset (www.php.net/reset)($data))
        ),
        array_map (www.php.net/array_map)('array_values', $data)
    )
);
Всё!
Спасибо за внимание. Буду рад, если кому-то это пригодится. :)
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Sun Jan 03, 2010 1:43 am (спустя 1 месяц 4 дня 9 часов 58 минут; написано за 26 минут 17 секунд)
   Post subject:
Reply with quote

Всем привет. Не просматривал старых сообщений,поэтому,может быть,задаю вопрос,который здесь уже ранее был расписан. Если что - извините. Так вот,хочу спросить,будет ли нормально использовать DbSimple от Дмитрия Котерова? Или эта библиотека уже плохо совмещается с новыми версиями пхп? Какую библиотеку лучше использовать сейчас? Может то обновление DbSimple,что предложил Ivan1986 на последней странице этой темы? Или есть еще чтот предложить? Что посоветуете?

И еще вот такое интересует: как правильно использовать методы,допустим,той же библиотеки DbSimple,в своих собственных классах/методах классов? Например,я обьявляю в глобальной области видимости(в шапке - head.php) коннект к бд:

$DB = DbSimple_Generic::connect('mysql://test:test@localhost1/non-existed-db');

А как правильно поступить для удобного вызова методов в своих классах? Думаю,передавать в каждый свой класс(конструктором или еще как-то) идентификатор $DВ,а потом пользоваться в своих методах синтаксисом

$this->db->select(...);

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

И еще,это уж точно не в тему,но: благодарю Дмитрия Котерова за хорошие книги! Спасибо за внимание. Буду рад толковым советам..
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Sun Jan 03, 2010 12:12 pm (спустя 10 часов 29 минут; написано за 7 минут 17 секунд)
   Post subject:
Reply with quote

Гость
Пока все недостатки оригинальной библиотеки - Deprecated в 5.3, в остальном работает нормально, ну плюс еще нету некоторой функциональности.
Из других модификаций этой библиотеки есть только патчи в этой теме, некоторые из которых включены в мою модификацию, о других мне неизвестно.
Недостатки моей версии из sourceforge.net/projects/quickfw/ в том, что во первых новая функциональность не документирована - только код сравнить, а во вторых - ее нужно немножко выпилить из движка - а именно пара констант и переложить класс AutoDbSimple рядом - это ленивая инициализация, а DbSimple_Generic::connect вырезан.

Ваш вариант использования имеет очень мало плюсов по сравнению с global $db, не знаю как лучше, но меня устраивает то, что я сделал - глобальный класс, в котором статические объекты, в результате везде доступ - это QFW::$db-> по сути конечно экономии 1 символ, но зато не нужно таскать по классам передачу параметров или присвоение в конструкторе. Выглядит примерно так
Code (php): скопировать код в буфер обмена
class QFW
{
        ...
        /*
        static (www.php.net/static) public $db;
        ...
}
Back to top
View user's profile Send private message Send e-mail
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9987
   поощрить/наказать


PostPosted: Wed Jan 06, 2010 6:22 pm (спустя 3 дня 6 часов 10 минут)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «попробовал написать себе простенький класс для более компактной работы с mysql.»,
расположенную в форуме Лень сходить в Поиск или почитать документацию (06 Января 2010, 18:22).
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Thu Jan 07, 2010 8:26 pm (спустя 1 день 2 часа 3 минуты; написано за 5 минут 15 секунд)
   Post subject:
Reply with quote

Здравствуйте!
Никто не сталкивался использованием библиотеки для нескольких БД одновременно? Вопрос может казаться абсурдным, но я пишу сейчас переносчик БД из одной системы в другую.
Code (php): скопировать код в буфер обмена
$DB1 = DbSimple_Generic::connect("mysql://login1:pass1@host/base1");
$DB2 = DbSimple_Generic::connect("mysql://login2:pass2@host/base2");
Я бы конечно не задумываясь использовал бы данную конструкцию, если не одно обстоятельство в файле Generic.php строке 113:
Code (php): скопировать код в буфер обмена
$object =& new $class($parsed);
То есть если создавать два подключения, а объект (допустим mysql) будет использоваться один и тот же, думаю будет полная путаница!?
Буду рад, если я ошибаюсь!)) Спасибо!
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Fri Jan 08, 2010 12:01 am (спустя 3 часа 34 минуты; написано за 38 секунд)
   Post subject:
Reply with quote

Гость
нет, объекты будут разными, кстати & можно убрать - это для совместимости с php4 и в 5.3 уже устаревшее
Back to top
View user's profile Send private message Send e-mail
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Sat Jan 30, 2010 8:06 pm (спустя 22 дня 20 часов 5 минут; написано за 1 минуту 39 секунд)
   Post subject:
Reply with quote

Отвязал свою версию библиотеки от фреймворка
Есть один недостаток - если переназначать обработчики ошибок/кешер/логер, то не работает ленивая инициализация. Правда их можно назначить в функции connect


DbSimple.zip
 Description:
Моя версия DbSimple

Download
 Filename:  DbSimple.zip
 Filesize:  30.54 KB
 Downloaded:  450 Time(s)

Back to top
View user's profile Send private message Send e-mail
DELETE ME
Заглянувший



Joined: 31 Jul 2008
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Sat Feb 20, 2010 4:28 am (спустя 20 дней 8 часов 22 минуты; написано за 7 минут 19 секунд)
   Post subject:
Reply with quote

Ivan1986
Огромное спасибо за PDO к DbSimple, выигрыш в скорости 1,5-2 раза.
Только ленивую инициализацию я у себя по-другому сделал, без магии. В вашем PDO-модуле только в одном методе нужно подключиться предварительно:
Code (php): скопировать код в буфер обмена
class MyDbClass extends DbSimple_Mypdo
{
        public function __construct($dsn='')
        {
                $this->dsn = $dsn;
        }

        protected function _performQuery($queryMain)
        {
                $this->connect(); //
                return parent::_performQuery($queryMain);
        }
// bla-bla-bla
}
Для DbSimple_Mysql нужен ещё такой метод в дочернем классе:
Code (php): скопировать код в буфер обмена
protected function _calcFoundRowsAvailable()
    {
                $this->connect();
                return parent::_calcFoundRowsAvailable();
    }
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page Previous  1, 2, 3 ... 10, 11, 12, 13, 14, 15  Next
Page 11 of 15    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

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

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can 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