Author |
Message |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Sun Dec 10, 2006 2:38 am (написано за 7 минут 29 секунд)
Post subject: DbSimple v2.x: лаконичная работа с различными СУБД
|
|
Вышла версия 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 |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Mon Dec 11, 2006 10:58 am (спустя 1 день 8 часов 19 минут; написано за 1 минуту 35 секунд)
Post subject:
|
|
Интересно погуглить по слову DbSimple. Находятся всякие разные библиотеки; одна из них - www.greaterscope.net/project/dbSimple - на видо очень пожожа на DbSimple (особенно имена методов и идеология фетча). Однако, заглянув в код, становится ясно, что она крайне слабая. Там даже placeholder-ов нет. Константин Жинько [tIT] wrote: |
В DbSimple2 работать не будет, потому что ты поменял debug_backtrace_smart | Вроде поправил - надо было просто $caller = $db->findLibraryCaller();
|
|
Back to top |
|
 |
Антон Макаренко
Участник форума

Joined: 05 Feb 2004
Posts: 374
Карма: 36 поощрить/наказать
Location: Киев
|
Posted: Tue Dec 12, 2006 5:04 pm (спустя 1 день 6 часов 5 минут; написано за 6 минут 8 секунд)
Post subject:
|
|
Переходя на 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 |
|
 |
Maus
Модератор

Joined: 29 Jun 2003
Posts: 8151
Карма: 271 поощрить/наказать
Location: пос. Омсукчан Магаданской области
|
Posted: Tue Dec 12, 2006 9:23 pm (спустя 4 часа 18 минут; написано за 1 минуту 2 секунды)
Post subject:
|
|
Антон Макаренко wrote: |
Что если при составлении запроса при передаче массивов в ?a и ?# анализировать числа и булевы и не окружать их кавычками? | а что, если кому-то другому нужно иногда число передать именно как строку? Мы приходим опять к тому же самому - типизированным массивным плейсхолдерам
|
|
Back to top |
|
 |
Антон Макаренко
Участник форума

Joined: 05 Feb 2004
Posts: 374
Карма: 36 поощрить/наказать
Location: Киев
|
Posted: Wed Dec 13, 2006 12:25 am (спустя 3 часа 2 минуты; написано за 9 минут 26 секунд)
Post subject:
|
|
Maus wrote: |
число передать именно как строку | Для этого в PHP есть приведение типов, функция settype(), а в DbSimple, соответственно is_integer(), is_float(). Сами плейсхолдеры ?a и #? не меняются, только убирают "лишние" кавычки при составлении, основываясь на типах элементов исходного массива. Не претендую на тщательные проверки чисел, записанных в "необычных" форматах, а простейшие улучшения (?) функциональности. Вообще мысль зародилась еще давно: сначала от желания экономить (спич..) кавычки, но затем от новых строгих требований СУБД; в нашем случае - невозможности использовать 2 вида плейсхолдеров.
|
|
Back to top |
|
 |
Константин Жинько [tIT]
Сотрудник «Лаборатории»

Joined: 12 Jun 2004
Posts: 2264
Карма: 106 поощрить/наказать
Location: Москва
|
Posted: Wed Dec 13, 2006 3:40 pm (спустя 15 часов 14 минут)
Post subject:
|
|
|
|
Back to top |
|
 |
symbix
Guest
Карма: 388 поощрить/наказать
|
Posted: Sun Dec 17, 2006 3:47 pm (спустя 4 дня 6 минут; написано за 21 секунду)
Post subject:
|
|
И вдогонку. Первая мысль - а зачем я сделал i алиасом a, ведь там могут быть и числовые ключи. Вторая - так ведь и логично: для запроса вида "insert into table values (?i)", array('foo','bar') как раз подходит :) Тут же третья мысль - добавить константу DBSIMPLE_DEFAULT, которая трансформируется в неэкранированное DEFAULT. -INF (оно же log(0)) уже используется - зато просто INF свободно, можно для этих целей и попользовать.
|
|
Back to top |
|
 |
symbix
Guest
Карма: 388 поощрить/наказать
|
Posted: Sun Dec 17, 2006 3:52 pm (спустя 5 минут; написано за 35 секунд)
Post subject:
|
|
...а еще есть NAN - например, результат acos(1.01). Сколько интересного узнаешь, направленно копая мануал :)
|
|
Back to top |
|
 |
Константин Жинько [tIT]
Сотрудник «Лаборатории»

Joined: 12 Jun 2004
Posts: 2264
Карма: 106 поощрить/наказать
Location: Москва
|
Posted: Sun Dec 17, 2006 4:36 pm (спустя 44 минуты; написано за 1 минуту 43 секунды)
Post subject:
|
|
symbix wrote: |
Но в целом, вынос такого функционала в Generic мне кажется вполне оправданным, так как стандарт предусматривает только такую форму записи insert into. | А зачем дополнительный маркер? Можно ?a оставить. Пожалуй, полезная фича. М |
| Вы бы зарегистрировались что ли. |
|
|
Back to top |
|
 |
symbix
Guest
Карма: 388 поощрить/наказать
|
Posted: Sun Dec 17, 2006 5:16 pm (спустя 39 минут; написано за 6 минут 35 секунд)
Post subject:
|
|
Гм, если оставить "?a", то как отличить контекст insert от update? дополнительный парсинг запроса делать? слишком затратно это, мне кажется. С DEFAULT все совсем просто получилось: в Generic.phpи в 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
Карма: 388 поощрить/наказать
|
Posted: Sun Dec 17, 2006 5:17 pm (спустя 59 секунд; написано за 24 секунды)
Post subject:
|
|
Ошибся, define('DBSIMPLE_DEFAULT', INF); разумеется.
|
|
Back to top |
|
 |
Phoebus
Участник форума

Joined: 16 Nov 2003
Posts: 30
Карма: 1 поощрить/наказать
Location: Minsk
|
Posted: Sun Dec 17, 2006 10:33 pm (спустя 5 часов 16 минут; написано за 2 минуты 22 секунды)
Post subject:
|
|
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 |
|
 |
Константин Жинько [tIT]
Сотрудник «Лаборатории»

Joined: 12 Jun 2004
Posts: 2264
Карма: 106 поощрить/наказать
Location: Москва
|
Posted: Sun Dec 17, 2006 10:45 pm (спустя 12 минут; написано за 1 минуту 36 секунд)
Post subject:
|
|
Phoebus wrote: |
$DB->Query(' INSERT INTO tbl ( ?a ) VALUES ( ?a )', array_keys($array_data), array_values($array_data)); | Вариант самый разумный, если не одно но: ключи - строки, поэтому будут заключены в апострофы. В случае MySQL это породит ошибку.
|
|
Back to top |
|
 |
Phoebus
Участник форума

Joined: 16 Nov 2003
Posts: 30
Карма: 1 поощрить/наказать
Location: Minsk
|
Posted: Sun Dec 17, 2006 10:48 pm (спустя 3 минуты; написано за 1 минуту 11 секунд)
Post subject:
|
|
Константин Жинько [tIT] wrote: |
Вариант самый разумный, если не одно но: ключи - строки, поэтому будут заключены в апострофы. В случае MySQL это породит ошибку. | Пардон, первый плейсходлер у меня используется так: ?# Я уже давно себе переделал его, добавив проверку is_array: если массив, то квотим массив идентификаторов, разделяя запятой, если нет -- то стандартный квотинг строки.
|
|
Back to top |
|
 |
Константин Жинько [tIT]
Сотрудник «Лаборатории»

Joined: 12 Jun 2004
Posts: 2264
Карма: 106 поощрить/наказать
Location: Москва
|
Posted: Mon Dec 18, 2006 12:04 am (спустя 1 час 15 минут; написано за 2 минуты 33 секунды)
Post subject:
|
|
Дмитрий Котеров wrote: |
И второй вопрос - приведите пример запроса, где DEFAULT требуется. | (-; Перефразирую вопрос: приведите select/insert/update запрос, где используется ключевое слово DEFAULT. Лично мне пока такие конструкции не попадались. Дмитрий Котеров wrote: |
Я переделаю на case insensitive, если ты не против. | Объективных возражений пока нет.
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Mon Dec 18, 2006 1:49 am (спустя 1 час 45 минут)
Post subject:
|
|
|
|
Back to top |
|
 |
Александр Шустов
Заглянувший
Joined: 18 Sep 2006
Posts: 16
Карма: 0 поощрить/наказать
Location: Москва
|
Posted: Mon Dec 18, 2006 4:17 am (спустя 2 часа 27 минут; написано за 1 минуту 7 секунд)
Post subject:
|
|
Кстати, невозможность использования комбинации ?_?# - это фича или баг?
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Mon Dec 18, 2006 11:08 am (спустя 6 часов 51 минуту; написано за 3 минуты 55 секунд)
Post subject:
|
|
?_?# - можете использовать, а можете и не использовать, в зависимости от контекста. Если в качестве значения для ?# передаете имя таблицы без префикса, то надо ?_?#, а если с префиксом, то ?#. Кроме того, в ?# ведь могут не только имена таблиц передаваться, но также и имена столбцов, а им префикс не нужен. Так что нельзя сказать, баг это или фича - так же, как нельзя сказать, баг или фича использование PHP-шного trim() в программе. :-) Александр Шустов wrote: |
теперь полностью отпала необходимость в DbSimple с собственными добавлениями | Это и очень хорошо. Вы в слежующий раз, прежде чем такие добавления, делать, пишите сюда, будем обсуждать идеи. Возможно, они окажутся достаточно универсальными, чтобы включить их прямо в библиотеку (возможно, с некоторыми идеологическими модификациями). А самостоятельно код патчить - это же означает сильно усложнить себе апгрейд...
|
|
Back to top |
|
 |
symbix
Guest
Карма: 388 поощрить/наказать
|
Posted: Mon Dec 18, 2006 2:00 pm (спустя 2 часа 51 минуту; написано за 3 минуты 26 секунд)
Post subject:
|
|
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
Карма: 413 поощрить/наказать
|
Posted: Mon Dec 18, 2006 2:05 pm (спустя 5 минут; написано за 1 минуту 47 секунд)
Post subject:
|
|
Наверное, Вы имели в виду не $id, а $param в query(). А каково значение default для таблицы table? Приведите полную структуру таблицы. Кроме того, попробуйте использовать "insert into table(?#) values(?a)" (см. выше) и в случае default просто не передавать поле id вовсе.
|
|
Back to top |
|
 |
symbix
Guest
Карма: 388 поощрить/наказать
|
Posted: Mon Dec 18, 2006 2:12 pm (спустя 6 минут; написано за 1 минуту 29 секунд)
Post subject:
|
|
Да, Вы правы, #? с поддержкой массивов, пожалуй, действительно решает сразу все вопросы.
|
|
Back to top |
|
 |
Guest
Карма: 388 поощрить/наказать
|
Posted: Mon Dec 18, 2006 2:57 pm (спустя 45 минут; написано за 57 секунд)
Post subject:
|
|
Дмитрий Котеров wrote: |
?_?# - можете использовать, а можете и не использовать | Дмитрий, вы меня неправильно поняли. Например: $mysql->setIdentPrefix('prx_'); При попытке использования комбинации ?_?# получаем prx_`table_name`
|
|
Back to top |
|
 |
Константин Жинько [tIT]
Сотрудник «Лаборатории»

Joined: 12 Jun 2004
Posts: 2264
Карма: 106 поощрить/наказать
Location: Москва
|
Posted: Mon Dec 18, 2006 3:01 pm (спустя 3 минуты; написано за 12 секунд)
Post subject:
|
|
Гость wrote: |
При попытке использования комбинации ?_?# получаем prx_`table_name` | Это баг.
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Mon Dec 18, 2006 3:01 pm (спустя 28 секунд; написано за 19 секунд)
Post subject:
|
|
Нет, это не баг. Вот правильное решение: $DB->query("SELECT * FROM ?#", $DB->setIdentPrefix() . $tableName)
|
|
Back to top |
|
 |
Александр Шустов
Заглянувший
Joined: 18 Sep 2006
Posts: 16
Карма: 0 поощрить/наказать
Location: Москва
|
Posted: Mon Dec 18, 2006 3:13 pm (спустя 11 минут; написано за 45 секунд)
Post subject:
|
|
Дмитрий Котеров wrote: |
Вот правильное решение: $DB->query("SELECT * FROM ?#", $DB->setIdentPrefix() . $tableName) | А вы не ошиблись? $DB->setIdentPrefix() - возвращает старый вариант префикса прошу прощения вы правы
|
|
Back to top |
|
 |
Константин Жинько [tIT]
Сотрудник «Лаборатории»

Joined: 12 Jun 2004
Posts: 2264
Карма: 106 поощрить/наказать
Location: Москва
|
Posted: Mon Dec 18, 2006 3:16 pm (спустя 3 минуты)
Post subject:
|
|
Дмитрий Котеров wrote: |
$DB->query("SELECT * FROM ?#", $DB->setIdentPrefix() . $tableName) | Криво и коряво - каждый раз писать $DB->setIdentPrefix(), когда нужна таблица. Куда короче руками этот префикс записать (-;
|
|
Back to top |
|
 |
Александр Шустов
Заглянувший
Joined: 18 Sep 2006
Posts: 16
Карма: 0 поощрить/наказать
Location: Москва
|
Posted: Mon Dec 18, 2006 3:18 pm (спустя 2 минуты; написано за 1 минуту 56 секунд)
Post subject:
|
|
Но все-таки, как-то некрасиво и если в ?# передать массив, все усложниться в разы да и если и использовать приведенный вами вариант, то нужно function setIdentPrefix($prx) заменить на function setIdentPrefix($prx = null) да и вариант setIdentPrefix().$table_name это все-таки не ?_?#...
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Mon Dec 18, 2006 3:56 pm (спустя 37 минут; написано за 1 минуту 20 секунд)
Post subject:
|
|
Константин Жинько [tIT] wrote: |
каждый ра | "Каждый раз" - это сильно. :-) Ситуации, когда это бывает нужно, случаются исчезающе редко и говорят скорее об ошибках в проектировании архитектуры, чем о недостатках метода. Александр Шустов wrote: |
если в ?# передать массив, все усложниться в разы | Префикс ?_ используется для имен таблиц, а не для полей. Зачем Вам передавать список имен таблиц в ?# ?
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Wed Dec 20, 2006 11:07 pm (спустя 2 дня 7 часов 10 минут)
Post subject:
|
|
|
|
Back to top |
|
 |
zuzmic
Заглянувший
Joined: 25 Dec 2006
Posts: 1
Карма: 0 поощрить/наказать
|
Posted: Tue Dec 26, 2006 12:06 am (спустя 5 дней 59 минут; написано за 1 минуту 51 секунду)
Post subject:
|
|
Прошу прощения, если я написал не в ту ветку. Хочу спросить DBSimple есть в варианте совместимом с PHP5 ?
|
|
Back to top |
|
 |
Константин Жинько [tIT]
Сотрудник «Лаборатории»

Joined: 12 Jun 2004
Posts: 2264
Карма: 106 поощрить/наказать
Location: Москва
|
Posted: Tue Dec 26, 2006 12:35 am (спустя 29 минут; написано за 1 минуту 20 секунд)
Post subject:
|
|
zuzmic wrote: |
Хочу спросить DBSimple есть в варианте совместимом с PHP5 ? | Он совместим с PHP4, а следовательно совместим с PHP5. У меня на 5.1.6 работает превосходно! С 5.2 могут быть (и скорее всего будут) проблемы, ибо обратная совместимость 5.2 во многом утеряна.
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Thu Dec 28, 2006 4:29 pm (спустя 2 дня 15 часов 53 минуты)
Post subject:
|
|
|
|
Back to top |
|
 |
chin
Участник форума

Joined: 23 Feb 2005
Posts: 312
Карма: 26 поощрить/наказать
Location: Украина, Киев
|
Posted: Tue Jan 09, 2007 2:20 am (спустя 11 дней 9 часов 51 минуту; написано за 1 минуту 19 секунд)
Post subject:
|
|
Господа, ответьте, пожалуйста. chin wrote: |
Где мы явно указываем изменение таблицы tree. | Это важный вопрос для меня. Какие мысли по этому поводу?
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Fri Jan 12, 2007 9:45 am (спустя 3 дня 7 часов 24 минуты; написано за 2 минуты 1 секунду)
Post subject:
|
|
Кстати, в качестве кэш-хранилища можно использовать 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 |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Sat Jan 13, 2007 3:39 pm (спустя 1 день 5 часов 54 минуты)
Post subject:
|
|
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Sat Jan 13, 2007 3:43 pm (спустя 4 минуты)
Post subject:
|
|
|
|
Back to top |
|
 |
Михаил Саяпин
Guest
Карма: 388 поощрить/наказать
|
Posted: Tue Jan 16, 2007 12:11 pm (спустя 2 дня 20 часов 28 минут; написано за 1 минуту 39 секунд)
Post subject:
|
|
Доброго времени, Замечательный враппер, единственное, что на моем неидеальном хостинге с выделением памяти под PHP всего 4 Мбайт - падает с превышением памяти из-за прямого выбора всего запроса. mysql_query + mysql_fetch_* решили проблему, но решение некрасивое. Очень бы хотелось какой-то модификатор для порядового выбора.
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Tue Jan 16, 2007 12:18 pm (спустя 6 минут; написано за 43 секунды)
Post subject:
|
|
Что же у Вас там за выборка такая огормная, что она в память не влезает... Может быть, неправильная логика скрипта? Например, выбираете ВСЕ записи, вместо того, чтобы выбрать 1 страницу?
|
|
Back to top |
|
 |
Guest
Карма: 388 поощрить/наказать
|
Posted: Wed Jan 17, 2007 9:54 pm (спустя 1 день 9 часов 36 минут; написано за 1 минуту 17 секунд)
Post subject:
|
|
Возможно не очень внимательно искал... А есть ли возможность получить имена и типы полей таблицы?
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Thu Jan 18, 2007 12:14 am (спустя 2 часа 19 минут; написано за 39 секунд)
Post subject:
|
|
dklab.ru/lib/DbSimple/manual.html
Обращаю особое внимание на то, что DbSimple намеренно не занимается «выравниваниием диалектов» SQL в различных СУБД (что частично пытаются делать PEAR DB и ADOdb). Она лишь позволяет обращаться к ним через единый стандартизированный и очень удобный интерфейс. ... Также DbSimple не является слоем получения стандартизированных метаданных БД (информации о структуре таблиц, полей, индексов и т. д.). Вообще, у меня есть такое убеждение, что необходимость получения метаданных базы свидетельствует об ошибке в архитектуре системы.
|
|
Back to top |
|
 |
|