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

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



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Sun Dec 10, 2006 2:38 am (написано за 7 минут 29 секунд)
   Post subject: DbSimple v2.x: лаконичная работа с различными СУБД
Reply with quote

Вышла версия 2 библиотеки (поддержка MySQL, PosgreSQL, FireBird; макроподстановки; атрибуты).
dklab.ru/lib/DbSimple/

Полный список изменений в версиях (dklab.ru/wsvn/lib/DbSimple/trunk/?op=log&rev=0&sc=0&isdir=1)
Текущая разрабатываемая версия (внимание! может быть нестабильной!) (dklab.ru/wsvn/lib/DbSimple/trunk/)

Обсуждения старой версии 1.x (forum.dklab.ru/viewtopic.php?t=18395) (тема закрыта, это архив).
Обсуждения разработчиков библиотеки 2.x (forum.dklab.ru/viewtopic.php?t=23766) (если вы делаете драйвер для новой СУБД, пишите туда).

В текущем топике же - общие вопросы по библиотеке, баг-репорты, пожелания и т.д.

Модули для PostgreSQL и FireBird подготовлены Константином Жинько [tIT].

Last edited by Дмитрий Котеров on Tue Jan 09, 2007 1:17 am; edited 3 times in total
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Mon Dec 11, 2006 10:58 am (спустя 1 день 8 часов 19 минут; написано за 1 минуту 35 секунд)
   Post subject:
Reply with quote

Интересно погуглить по слову DbSimple.

Находятся всякие разные библиотеки; одна из них - www.greaterscope.net/project/dbSimple - на видо очень пожожа на DbSimple (особенно имена методов и идеология фетча). Однако, заглянув в код, становится ясно, что она крайне слабая. Там даже placeholder-ов нет.
Константин Жинько [tIT] wrote:
В DbSimple2 работать не будет, потому что ты поменял debug_backtrace_smart
Вроде поправил - надо было просто

$caller = $db->findLibraryCaller();
Back to top
View user's profile Send private message Send e-mail
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 31
   поощрить/наказать

Location: Киев

PostPosted: Tue Dec 12, 2006 5:04 pm (спустя 1 день 6 часов 5 минут; написано за 6 минут 8 секунд)
   Post subject:
Reply with quote

Переходя на 2.x с 1.x, попался на глупое стечение обстоятельств.
К папке с библиотеками (скажем, ".../lib") был прописан include path. 1.x лежала в папке .../lib/DbSimple, а 2.x я сохранил как .../lib/DbSimple2
Таким образом, код оказался нерабочим:
Code (php): скопировать код в буфер обмена
// include path
if (!defined (www.php.net/defined)("PATH_SEPARATOR"))
        define (www.php.net/define)("PATH_SEPARATOR", getenv (www.php.net/getenv)("COMSPEC")? ";" : ":");
ini_set (www.php.net/ini_set)("include_path", ini_get (www.php.net/ini_get)("include_path").PATH_SEPARATOR.$CFG['LIBS']);

// ...

// mysql connection
require(CFG_LIBS.'/DbSimple2/Generic.php');
$DB = DbSimple_Generic::connect('mysql://'.CFG_MYSQL_USER.':'.CFG_MYSQL_PASSWORD.'@'.CFG_MYSQL_HOST.'/'.CFG_MYSQL_DATABASE);
Как показало исследование кода, если include path прописан, Generic.php ищет DbSimple/<бд>.php в include path... и находит первую версию :-/
Be careful!
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



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

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

PostPosted: Tue Dec 12, 2006 9:23 pm (спустя 4 часа 18 минут; написано за 1 минуту 2 секунды)
   Post subject:
Reply with quote

Антон Макаренко wrote:
Что если при составлении запроса при передаче массивов в ?a и ?# анализировать числа и булевы и не окружать их кавычками?
а что, если кому-то другому нужно иногда число передать именно как строку? Мы приходим опять к тому же самому - типизированным массивным плейсхолдерам
Back to top
View user's profile Send private message
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 31
   поощрить/наказать

Location: Киев

PostPosted: Wed Dec 13, 2006 12:25 am (спустя 3 часа 2 минуты; написано за 9 минут 26 секунд)
   Post subject:
Reply with quote

Maus wrote:
число передать именно как строку
Для этого в PHP есть приведение типов, функция settype(), а в DbSimple, соответственно is_integer(), is_float(). Сами плейсхолдеры ?a и #? не меняются, только убирают "лишние" кавычки при составлении, основываясь на типах элементов исходного массива.

Не претендую на тщательные проверки чисел, записанных в "необычных" форматах, а простейшие улучшения (?) функциональности.
Вообще мысль зародилась еще давно: сначала от желания экономить (спич..) кавычки, но затем от новых строгих требований СУБД; в нашем случае - невозможности использовать 2 вида плейсхолдеров.
Back to top
View user's profile Send private message Send e-mail
Константин Жинько [tIT]
Сотрудник «Лаборатории»



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

Location: Москва

PostPosted: Wed Dec 13, 2006 3:40 pm (спустя 15 часов 14 минут)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «MySQL - strict mode»,
расположенную в форуме Общие вопросы :: SQL (13 Декабря 2006, 15:40).
Back to top
View user's profile Send private message
symbix
Guest





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


PostPosted: Sun Dec 17, 2006 3:47 pm (спустя 4 дня 6 минут; написано за 21 секунду)
   Post subject:
Reply with quote

И вдогонку. Первая мысль - а зачем я сделал i алиасом a, ведь там могут быть и числовые ключи. Вторая - так ведь и логично: для запроса вида "insert into table values (?i)", array('foo','bar') как раз подходит :)

Тут же третья мысль - добавить константу DBSIMPLE_DEFAULT, которая трансформируется в неэкранированное DEFAULT. -INF (оно же log(0)) уже используется - зато просто INF свободно, можно для этих целей и попользовать.
Back to top
symbix
Guest





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


PostPosted: Sun Dec 17, 2006 3:52 pm (спустя 5 минут; написано за 35 секунд)
   Post subject:
Reply with quote

...а еще есть NAN - например, результат acos(1.01). Сколько интересного узнаешь, направленно копая мануал :)
Back to top
Константин Жинько [tIT]
Сотрудник «Лаборатории»



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

Location: Москва

PostPosted: Sun Dec 17, 2006 4:36 pm (спустя 44 минуты; написано за 1 минуту 43 секунды)
   Post subject:
Reply with quote

symbix wrote:
Но в целом, вынос такого функционала в Generic мне кажется вполне оправданным, так как стандарт предусматривает только такую форму записи insert into.
А зачем дополнительный маркер? Можно ?a оставить. Пожалуй, полезная фича.

М

Вы бы зарегистрировались что ли.
Back to top
View user's profile Send private message
symbix
Guest





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


PostPosted: Sun Dec 17, 2006 5:16 pm (спустя 39 минут; написано за 6 минут 35 секунд)
   Post subject:
Reply with quote

Гм, если оставить "?a", то как отличить контекст insert от update? дополнительный парсинг запроса делать? слишком затратно это, мне кажется.

С DEFAULT все совсем просто получилось:
в Generic.php
Code (php): скопировать код в буфер обмена
define (www.php.net/define)('DBSIMPLE_SKIP', INF);
и в Postgresql.php
Code (php): скопировать код в буфер обмена
    function _performEscape($s, $isIdent=false)
    {
        if (!$isIdent)
!           return $s === DBSIMPLE_DEFAULT ? 'DEFAULT' : ("'" . str_replace (www.php.net/str_replace)("'", "''", $s) . "'");
        else
            return '"' . str_replace (www.php.net/str_replace)('"', '_', $s) . '"';
    }
Возможно, по аналогии с обработкой NULL лучше это делать в Generic.php. Хотя, с другой стороны, я бы и обработку того же NULL вынес в _performEscape - чисто эстетически мне не нравятся частные случаи, дублирующиеся в нескольких местах.
Quote:
Вы бы зарегистрировались что ли.
Спасибо за предложение, но не думаю, что буду активным участником форума вне этой темы.
Back to top
symbix
Guest





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


PostPosted: Sun Dec 17, 2006 5:17 pm (спустя 59 секунд; написано за 24 секунды)
   Post subject:
Reply with quote

Ошибся, define('DBSIMPLE_DEFAULT', INF); разумеется.
Back to top
Phoebus
Участник форума



Joined: 16 Nov 2003
Posts: 30
Карма: 1
   поощрить/наказать

Location: Minsk

PostPosted: Sun Dec 17, 2006 10:33 pm (спустя 5 часов 16 минут; написано за 2 минуты 22 секунды)
   Post subject:
Reply with quote

symbix
А так?
Code (php): скопировать код в буфер обмена
$DB->Query('
        INSERT INTO tbl ( ?# )
        VALUES ( ?a )'
,
                array_keys (www.php.net/array_keys)($array_data),
                array_values (www.php.net/array_values)($array_data));
И не надо доп. маркер совершенно. Такое нововведение как ?i -- это то же самое как введение метода Select($tables_to_fetch,$columns_to_fetch) который бы строил запрос самостоятельно.

Last edited by Phoebus on Sun Dec 17, 2006 11:35 pm; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail
Константин Жинько [tIT]
Сотрудник «Лаборатории»



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

Location: Москва

PostPosted: Sun Dec 17, 2006 10:45 pm (спустя 12 минут; написано за 1 минуту 36 секунд)
   Post subject:
Reply with quote

Phoebus wrote:
$DB->Query('
        INSERT INTO tbl ( ?a )
        VALUES ( ?a )',
                array_keys($array_data),
                array_values($array_data));
Вариант самый разумный, если не одно но: ключи - строки, поэтому будут заключены в апострофы. В случае MySQL это породит ошибку.
Back to top
View user's profile Send private message
Phoebus
Участник форума



Joined: 16 Nov 2003
Posts: 30
Карма: 1
   поощрить/наказать

Location: Minsk

PostPosted: Sun Dec 17, 2006 10:48 pm (спустя 3 минуты; написано за 1 минуту 11 секунд)
   Post subject:
Reply with quote

Константин Жинько [tIT] wrote:
Вариант самый разумный, если не одно но: ключи - строки, поэтому будут заключены в апострофы. В случае MySQL это породит ошибку.
Пардон, первый плейсходлер у меня используется так: ?#
Я уже давно себе переделал его, добавив проверку is_array: если массив, то квотим массив идентификаторов, разделяя запятой, если нет -- то стандартный квотинг строки.
Back to top
View user's profile Send private message Send e-mail
Константин Жинько [tIT]
Сотрудник «Лаборатории»



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

Location: Москва

PostPosted: Mon Dec 18, 2006 12:04 am (спустя 1 час 15 минут; написано за 2 минуты 33 секунды)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
И второй вопрос - приведите пример запроса, где DEFAULT требуется.
Code (SQL): скопировать код в буфер обмена
CREATE TABLE test(
  str VARCHAR(32) DEFAULT 'YOHOHO!'
);
(-;

Перефразирую вопрос: приведите select/insert/update запрос, где используется ключевое слово DEFAULT. Лично мне пока такие конструкции не попадались.
Дмитрий Котеров wrote:
Я переделаю на case insensitive, если ты не против.
Объективных возражений пока нет.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Mon Dec 18, 2006 1:49 am (спустя 1 час 45 минут)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «Аспекты Subversion»,
расположенную в форуме Конструктор (18 Декабря 2006, 01:49).
Back to top
View user's profile Send private message Send e-mail
Александр Шустов
Заглянувший



Joined: 18 Sep 2006
Posts: 16
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Mon Dec 18, 2006 4:17 am (спустя 2 часа 27 минут; написано за 1 минуту 7 секунд)
   Post subject:
Reply with quote

Кстати, невозможность использования комбинации ?_?# - это фича или баг?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Mon Dec 18, 2006 11:08 am (спустя 6 часов 51 минуту; написано за 3 минуты 55 секунд)
   Post subject:
Reply with quote

?_?# - можете использовать, а можете и не использовать, в зависимости от контекста. Если в качестве значения для ?# передаете имя таблицы без префикса, то надо ?_?#, а если с префиксом, то ?#. Кроме того, в ?# ведь могут не только имена таблиц передаваться, но также и имена столбцов, а им префикс не нужен. Так что нельзя сказать, баг это или фича - так же, как нельзя сказать, баг или фича использование PHP-шного trim() в программе. :-)
Александр Шустов wrote:
теперь полностью отпала необходимость в DbSimple с собственными добавлениями
Это и очень хорошо. Вы в слежующий раз, прежде чем такие добавления, делать, пишите сюда, будем обсуждать идеи. Возможно, они окажутся достаточно универсальными, чтобы включить их прямо в библиотеку (возможно, с некоторыми идеологическими модификациями). А самостоятельно код патчить - это же означает сильно усложнить себе апгрейд...
Back to top
View user's profile Send private message Send e-mail
symbix
Guest





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


PostPosted: Mon Dec 18, 2006 2:00 pm (спустя 2 часа 51 минуту; написано за 3 минуты 26 секунд)
   Post subject:
Reply with quote

Quote:
Перефразирую вопрос: приведите select/insert/update запрос, где используется ключевое слово DEFAULT. Лично мне пока такие конструкции не попадались
Code (php): скопировать код в буфер обмена
if ($id === false) {
  $param = "DEFAULT";
} else {
  $param = "'" . $db->escape($id) . "'";
}
//...
$db->query("insert into table (param, foo, bar) values ($id, $foo, $bar)");
Встречается нечто подобное. (Тут $db, разумеется, к DbSimple отношения не имеет).
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Mon Dec 18, 2006 2:05 pm (спустя 5 минут; написано за 1 минуту 47 секунд)
   Post subject:
Reply with quote

Наверное, Вы имели в виду не $id, а $param в query().

А каково значение default для таблицы table? Приведите полную структуру таблицы.
Кроме того, попробуйте использовать "insert into table(?#) values(?a)" (см. выше) и в случае default просто не передавать поле id вовсе.
Back to top
View user's profile Send private message Send e-mail
symbix
Guest





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


PostPosted: Mon Dec 18, 2006 2:12 pm (спустя 6 минут; написано за 1 минуту 29 секунд)
   Post subject:
Reply with quote

Да, Вы правы, #? с поддержкой массивов, пожалуй, действительно решает сразу все вопросы.
Back to top
Guest






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


PostPosted: Mon Dec 18, 2006 2:57 pm (спустя 45 минут; написано за 57 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
?_?# - можете использовать, а можете и не использовать
Дмитрий, вы меня неправильно поняли.
Например: $mysql->setIdentPrefix('prx_');
При попытке использования комбинации ?_?# получаем prx_`table_name`
Back to top
Константин Жинько [tIT]
Сотрудник «Лаборатории»



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

Location: Москва

PostPosted: Mon Dec 18, 2006 3:01 pm (спустя 3 минуты; написано за 12 секунд)
   Post subject:
Reply with quote

Гость wrote:
При попытке использования комбинации ?_?# получаем prx_`table_name`
Это баг.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Mon Dec 18, 2006 3:01 pm (спустя 28 секунд; написано за 19 секунд)
   Post subject:
Reply with quote

Нет, это не баг.

Вот правильное решение:
$DB->query("SELECT * FROM ?#", $DB->setIdentPrefix() . $tableName)
Back to top
View user's profile Send private message Send e-mail
Александр Шустов
Заглянувший



Joined: 18 Sep 2006
Posts: 16
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Mon Dec 18, 2006 3:13 pm (спустя 11 минут; написано за 45 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
Вот правильное решение:
$DB->query("SELECT * FROM ?#", $DB->setIdentPrefix() . $tableName)
А вы не ошиблись?
$DB->setIdentPrefix() - возвращает старый вариант префикса

прошу прощения вы правы
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



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

Location: Москва

PostPosted: Mon Dec 18, 2006 3:16 pm (спустя 3 минуты)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
$DB->query("SELECT * FROM ?#", $DB->setIdentPrefix() . $tableName)
Криво и коряво - каждый раз писать $DB->setIdentPrefix(), когда нужна таблица. Куда короче руками этот префикс записать (-;
Back to top
View user's profile Send private message
Александр Шустов
Заглянувший



Joined: 18 Sep 2006
Posts: 16
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Mon Dec 18, 2006 3:18 pm (спустя 2 минуты; написано за 1 минуту 56 секунд)
   Post subject:
Reply with quote

Но все-таки, как-то некрасиво и если в ?# передать массив, все усложниться в разы
да и если и использовать приведенный вами вариант, то нужно
function setIdentPrefix($prx) заменить на function setIdentPrefix($prx = null)

да и вариант setIdentPrefix().$table_name это все-таки не ?_?#...
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Mon Dec 18, 2006 3:56 pm (спустя 37 минут; написано за 1 минуту 20 секунд)
   Post subject:
Reply with quote

Константин Жинько [tIT] wrote:
каждый ра
"Каждый раз" - это сильно. :-) Ситуации, когда это бывает нужно, случаются исчезающе редко и говорят скорее об ошибках в проектировании архитектуры, чем о недостатках метода.
Александр Шустов wrote:
если в ?# передать массив, все усложниться в разы
Префикс ?_ используется для имен таблиц, а не для полей. Зачем Вам передавать список имен таблиц в ?# ?
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Wed Dec 20, 2006 11:07 pm (спустя 2 дня 7 часов 10 минут)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «DbSilly: а давайте напишем собственный SQL-парсер!»,
расположенную в форуме Мусоропровод (20 Декабря 2006, 23:07).
Back to top
View user's profile Send private message Send e-mail
zuzmic
Заглянувший



Joined: 25 Dec 2006
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Tue Dec 26, 2006 12:06 am (спустя 5 дней 59 минут; написано за 1 минуту 51 секунду)
   Post subject:
Reply with quote

Прошу прощения, если я написал не в ту ветку.
Хочу спросить DBSimple есть в варианте совместимом с PHP5 ?
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



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

Location: Москва

PostPosted: Tue Dec 26, 2006 12:35 am (спустя 29 минут; написано за 1 минуту 20 секунд)
   Post subject:
Reply with quote

zuzmic wrote:
Хочу спросить DBSimple есть в варианте совместимом с PHP5 ?
Он совместим с PHP4, а следовательно совместим с PHP5. У меня на 5.1.6 работает превосходно!
С 5.2 могут быть (и скорее всего будут) проблемы, ибо обратная совместимость 5.2 во многом утеряна.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Thu Dec 28, 2006 4:29 pm (спустя 2 дня 15 часов 53 минуты)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «DbSimple: передача атрибутов через массив, а не в тексте запроса»,
расположенную в форуме Разное :: PHP (28 Декабря 2006, 16:29).
Back to top
View user's profile Send private message Send e-mail
chin
Участник форума



Joined: 23 Feb 2005
Posts: 312
Карма: 26
   поощрить/наказать

Location: Украина, Киев

PostPosted: Tue Jan 09, 2007 2:20 am (спустя 11 дней 9 часов 51 минуту; написано за 1 минуту 19 секунд)
   Post subject:
Reply with quote

Господа, ответьте, пожалуйста.
chin wrote:
Где мы явно указываем изменение таблицы tree.
Это важный вопрос для меня. Какие мысли по этому поводу?
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Fri Jan 12, 2007 9:45 am (спустя 3 дня 7 часов 24 минуты; написано за 2 минуты 1 секунду)
   Post subject:
Reply with quote

Кстати, в качестве кэш-хранилища можно использовать Cache_Lite из PEAR:
pear.php.net/manual/en/package.caching.cache-lite.intro.php

Вероятно, стоит сделать поддержку его прямо в библиотеке, т.е. дать возможность в setCacher() передавать прямо объект класса Cache_Light (method_exists($cacher, 'get') && method_exists($cacher, 'save')), а не только имя функции-кэшера. Так будет совсем универсально и благостно для буржуев. ;-)
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Sat Jan 13, 2007 3:39 pm (спустя 1 день 5 часов 54 минуты)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «DbSimple и кэширование.»,
расположенную в форуме Конструктор (13 Января 2007, 15:39).
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Sat Jan 13, 2007 3:43 pm (спустя 4 минуты)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «DbSimple: устаревшие сообщения.»,
расположенную в форуме Мусоропровод (13 Января 2007, 15:43).
Back to top
View user's profile Send private message Send e-mail
Михаил Саяпин
Guest





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


PostPosted: Tue Jan 16, 2007 12:11 pm (спустя 2 дня 20 часов 28 минут; написано за 1 минуту 39 секунд)
   Post subject:
Reply with quote

Доброго времени,

Замечательный враппер, единственное, что на моем неидеальном хостинге с выделением памяти под PHP всего 4 Мбайт - падает с превышением памяти из-за прямого выбора всего запроса. mysql_query + mysql_fetch_* решили проблему, но решение некрасивое. Очень бы хотелось какой-то модификатор для порядового выбора.
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Tue Jan 16, 2007 12:18 pm (спустя 6 минут; написано за 43 секунды)
   Post subject:
Reply with quote

Что же у Вас там за выборка такая огормная, что она в память не влезает... Может быть, неправильная логика скрипта? Например, выбираете ВСЕ записи, вместо того, чтобы выбрать 1 страницу?
Back to top
View user's profile Send private message Send e-mail
Guest






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


PostPosted: Wed Jan 17, 2007 9:54 pm (спустя 1 день 9 часов 36 минут; написано за 1 минуту 17 секунд)
   Post subject:
Reply with quote

Возможно не очень внимательно искал... А есть ли возможность получить имена и типы полей таблицы?
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 409
   поощрить/наказать


PostPosted: Thu Jan 18, 2007 12:14 am (спустя 2 часа 19 минут; написано за 39 секунд)
   Post subject:
Reply with quote

dklab.ru/lib/DbSimple/manual.html

Обращаю особое внимание на то, что DbSimple намеренно не занимается «выравниваниием диалектов» SQL в различных СУБД (что частично пытаются делать PEAR DB и ADOdb). Она лишь позволяет обращаться к ним через единый стандартизированный и очень удобный интерфейс.
...
Также DbSimple не является слоем получения стандартизированных метаданных БД (информации о структуре таблиц, полей, индексов и т. д.).

Вообще, у меня есть такое убеждение, что необходимость получения метаданных базы свидетельствует об ошибке в архитектуре системы.
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
Goto page 1, 2, 3 ... 13, 14, 15  Next
Page 1 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