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

DbSimple v2.x: лаконичная работа с различными СУБД (Дмитрий Кóтеров, оценка: 10)
На страницу 1, 2, 3 ... 10, 11, 12  След.
Автор Сообщение
Дмитрий Кóтеров
Администратор



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Вс Dec 10, 2006 2:38 am (написано за 7 минут 29 секунд)
   Заголовок сообщения: DbSimple v2.x: лаконичная работа с различными СУБД
Ответить с цитатой

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

Полный список изменений в версиях
Текущая разрабатываемая версия (внимание! может быть нестабильной!)

Обсуждения старой версии 1.x (тема закрыта, это архив).
Обсуждения разработчиков библиотеки 2.x (если вы делаете драйвер для новой СУБД, пишите туда).

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

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

Последний раз редактировалось: Дмитрий Кóтеров (Вт Янв 09, 2007 1:17 am), всего редактировалось 3 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Дмитрий Кóтеров
Администратор



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Пн Dec 11, 2006 10:58 am (спустя 1 день 8 часов 19 минут; написано за 1 минуту 35 секунд)
   Заголовок сообщения:
Ответить с цитатой

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

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

$caller = $db->findLibraryCaller();
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Антон Макаренко
Участник форума



Зарегистрирован: 05.02.2004
Сообщ.: 374
Карма: 30
   поощрить/наказать

Откуда: Киев

СообщениеДобавлено: Вт Dec 12, 2006 5:04 pm (спустя 1 день 6 часов 5 минут; написано за 6 минут 8 секунд)
   Заголовок сообщения:
Ответить с цитатой

Переходя на 2.x с 1.x, попался на глупое стечение обстоятельств.
К папке с библиотеками (скажем, ".../lib") был прописан include path. 1.x лежала в папке .../lib/DbSimple, а 2.x я сохранил как .../lib/DbSimple2
Таким образом, код оказался нерабочим:
Код (php): скопировать код в буфер обмена
// include path
if (!defined("PATH_SEPARATOR"))
        define("PATH_SEPARATOR", getenv("COMSPEC")? ";" : ":");
ini_set("include_path", 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!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Maus
Модератор



Зарегистрирован: 29.06.2003
Сообщ.: 7417
Карма: 242
   поощрить/наказать

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

СообщениеДобавлено: Вт Dec 12, 2006 9:23 pm (спустя 4 часа 18 минут; написано за 1 минуту 2 секунды)
   Заголовок сообщения:
Ответить с цитатой

Антон Макаренко писал(а):
Что если при составлении запроса при передаче массивов в ?a и ?# анализировать числа и булевы и не окружать их кавычками?
а что, если кому-то другому нужно иногда число передать именно как строку? Мы приходим опять к тому же самому - типизированным массивным плейсхолдерам
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Антон Макаренко
Участник форума



Зарегистрирован: 05.02.2004
Сообщ.: 374
Карма: 30
   поощрить/наказать

Откуда: Киев

СообщениеДобавлено: Ср Dec 13, 2006 12:25 am (спустя 3 часа 2 минуты; написано за 9 минут 26 секунд)
   Заголовок сообщения:
Ответить с цитатой

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

Не претендую на тщательные проверки чисел, записанных в "необычных" форматах, а простейшие улучшения (?) функциональности.
Вообще мысль зародилась еще давно: сначала от желания экономить (спич..) кавычки, но затем от новых строгих требований СУБД; в нашем случае - невозможности использовать 2 вида плейсхолдеров.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Зарегистрирован: 12.06.2004
Сообщ.: 2265
Карма: 110
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Ср Dec 13, 2006 3:40 pm (спустя 15 часов 14 минут)
   Заголовок сообщения:
Ответить с цитатой


М

Ветка выделена в отдельную тему «MySQL - strict mode»,
расположенную в форуме Общие вопросы :: SQL (13 Декабря 2006, 15:40).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
symbix
Гость





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


СообщениеДобавлено: Вс Dec 17, 2006 3:47 pm (спустя 4 дня 6 минут; написано за 21 секунду)
   Заголовок сообщения:
Ответить с цитатой

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

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





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


СообщениеДобавлено: Вс Dec 17, 2006 3:52 pm (спустя 5 минут; написано за 35 секунд)
   Заголовок сообщения:
Ответить с цитатой

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



Зарегистрирован: 12.06.2004
Сообщ.: 2265
Карма: 110
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Вс Dec 17, 2006 4:36 pm (спустя 44 минуты; написано за 1 минуту 43 секунды)
   Заголовок сообщения:
Ответить с цитатой

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

М

Вы бы зарегистрировались что ли.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
symbix
Гость





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


СообщениеДобавлено: Вс Dec 17, 2006 5:16 pm (спустя 39 минут; написано за 6 минут 35 секунд)
   Заголовок сообщения:
Ответить с цитатой

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

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





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


СообщениеДобавлено: Вс Dec 17, 2006 5:17 pm (спустя 59 секунд; написано за 24 секунды)
   Заголовок сообщения:
Ответить с цитатой

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



Зарегистрирован: 16.11.2003
Сообщ.: 30
Карма: 2
   поощрить/наказать

Откуда: Minsk

СообщениеДобавлено: Вс Dec 17, 2006 10:33 pm (спустя 5 часов 16 минут; написано за 2 минуты 22 секунды)
   Заголовок сообщения:
Ответить с цитатой

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

Последний раз редактировалось: Phoebus (Вс Dec 17, 2006 11:35 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора ICQ Number
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Зарегистрирован: 12.06.2004
Сообщ.: 2265
Карма: 110
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Вс Dec 17, 2006 10:45 pm (спустя 12 минут; написано за 1 минуту 36 секунд)
   Заголовок сообщения:
Ответить с цитатой

Phoebus писал(а):
$DB->Query('
        INSERT INTO tbl ( ?a )
        VALUES ( ?a )',
                array_keys($array_data),
                array_values($array_data));
Вариант самый разумный, если не одно но: ключи - строки, поэтому будут заключены в апострофы. В случае MySQL это породит ошибку.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
Phoebus
Участник форума



Зарегистрирован: 16.11.2003
Сообщ.: 30
Карма: 2
   поощрить/наказать

Откуда: Minsk

СообщениеДобавлено: Вс Dec 17, 2006 10:48 pm (спустя 3 минуты; написано за 1 минуту 11 секунд)
   Заголовок сообщения:
Ответить с цитатой

Константин Жинько [tIT] писал(а):
Вариант самый разумный, если не одно но: ключи - строки, поэтому будут заключены в апострофы. В случае MySQL это породит ошибку.
Пардон, первый плейсходлер у меня используется так: ?#
Я уже давно себе переделал его, добавив проверку is_array: если массив, то квотим массив идентификаторов, разделяя запятой, если нет -- то стандартный квотинг строки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора ICQ Number
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Зарегистрирован: 12.06.2004
Сообщ.: 2265
Карма: 110
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Dec 18, 2006 12:04 am (спустя 1 час 15 минут; написано за 2 минуты 33 секунды)
   Заголовок сообщения:
Ответить с цитатой

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

Перефразирую вопрос: приведите select/insert/update запрос, где используется ключевое слово DEFAULT. Лично мне пока такие конструкции не попадались.
Дмитрий Кóтеров писал(а):
Я переделаю на case insensitive, если ты не против.
Объективных возражений пока нет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
Дмитрий Кóтеров
Администратор



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Пн Dec 18, 2006 1:49 am (спустя 1 час 45 минут)
   Заголовок сообщения:
Ответить с цитатой


М

Ветка выделена в отдельную тему «Аспекты Subversion»,
расположенную в форуме Конструктор (18 Декабря 2006, 01:49).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Александр Шустов
Заглянувший



Зарегистрирован: 18.09.2006
Сообщ.: 16
Карма: 0
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Dec 18, 2006 4:17 am (спустя 2 часа 27 минут; написано за 1 минуту 7 секунд)
   Заголовок сообщения:
Ответить с цитатой

Кстати, невозможность использования комбинации ?_?# - это фича или баг?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Дмитрий Кóтеров
Администратор



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Пн Dec 18, 2006 11:08 am (спустя 6 часов 51 минуту; написано за 3 минуты 55 секунд)
   Заголовок сообщения:
Ответить с цитатой

?_?# - можете использовать, а можете и не использовать, в зависимости от контекста. Если в качестве значения для ?# передаете имя таблицы без префикса, то надо ?_?#, а если с префиксом, то ?#. Кроме того, в ?# ведь могут не только имена таблиц передаваться, но также и имена столбцов, а им префикс не нужен. Так что нельзя сказать, баг это или фича - так же, как нельзя сказать, баг или фича использование PHP-шного trim() в программе. :-)
Александр Шустов писал(а):
теперь полностью отпала необходимость в DbSimple с собственными добавлениями
Это и очень хорошо. Вы в слежующий раз, прежде чем такие добавления, делать, пишите сюда, будем обсуждать идеи. Возможно, они окажутся достаточно универсальными, чтобы включить их прямо в библиотеку (возможно, с некоторыми идеологическими модификациями). А самостоятельно код патчить - это же означает сильно усложнить себе апгрейд...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
symbix
Гость





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


СообщениеДобавлено: Пн Dec 18, 2006 2:00 pm (спустя 2 часа 51 минуту; написано за 3 минуты 26 секунд)
   Заголовок сообщения:
Ответить с цитатой

Цитата:
Перефразирую вопрос: приведите select/insert/update запрос, где используется ключевое слово DEFAULT. Лично мне пока такие конструкции не попадались
Код (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 отношения не имеет).
Вернуться к началу
Дмитрий Кóтеров
Администратор



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Пн Dec 18, 2006 2:05 pm (спустя 5 минут; написано за 1 минуту 47 секунд)
   Заголовок сообщения:
Ответить с цитатой

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

А каково значение default для таблицы table? Приведите полную структуру таблицы.
Кроме того, попробуйте использовать "insert into table(?#) values(?a)" (см. выше) и в случае default просто не передавать поле id вовсе.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
symbix
Гость





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


СообщениеДобавлено: Пн Dec 18, 2006 2:12 pm (спустя 6 минут; написано за 1 минуту 29 секунд)
   Заголовок сообщения:
Ответить с цитатой

Да, Вы правы, #? с поддержкой массивов, пожалуй, действительно решает сразу все вопросы.
Вернуться к началу
Гость






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


СообщениеДобавлено: Пн Dec 18, 2006 2:57 pm (спустя 45 минут; написано за 57 секунд)
   Заголовок сообщения:
Ответить с цитатой

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



Зарегистрирован: 12.06.2004
Сообщ.: 2265
Карма: 110
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Dec 18, 2006 3:01 pm (спустя 3 минуты; написано за 12 секунд)
   Заголовок сообщения:
Ответить с цитатой

Гость писал(а):
При попытке использования комбинации ?_?# получаем prx_`table_name`
Это баг.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
Дмитрий Кóтеров
Администратор



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Пн Dec 18, 2006 3:01 pm (спустя 28 секунд; написано за 19 секунд)
   Заголовок сообщения:
Ответить с цитатой

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

Вот правильное решение:
$DB->query("SELECT * FROM ?#", $DB->setIdentPrefix() . $tableName)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Александр Шустов
Заглянувший



Зарегистрирован: 18.09.2006
Сообщ.: 16
Карма: 0
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Dec 18, 2006 3:13 pm (спустя 11 минут; написано за 45 секунд)
   Заголовок сообщения:
Ответить с цитатой

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

прошу прощения вы правы
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Зарегистрирован: 12.06.2004
Сообщ.: 2265
Карма: 110
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Dec 18, 2006 3:16 pm (спустя 3 минуты)
   Заголовок сообщения:
Ответить с цитатой

Дмитрий Кóтеров писал(а):
$DB->query("SELECT * FROM ?#", $DB->setIdentPrefix() . $tableName)
Криво и коряво - каждый раз писать $DB->setIdentPrefix(), когда нужна таблица. Куда короче руками этот префикс записать (-;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
Александр Шустов
Заглянувший



Зарегистрирован: 18.09.2006
Сообщ.: 16
Карма: 0
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Dec 18, 2006 3:18 pm (спустя 2 минуты; написано за 1 минуту 56 секунд)
   Заголовок сообщения:
Ответить с цитатой

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

да и вариант setIdentPrefix().$table_name это все-таки не ?_?#...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Дмитрий Кóтеров
Администратор



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Пн Dec 18, 2006 3:56 pm (спустя 37 минут; написано за 1 минуту 20 секунд)
   Заголовок сообщения:
Ответить с цитатой

Константин Жинько [tIT] писал(а):
каждый ра
"Каждый раз" - это сильно. :-) Ситуации, когда это бывает нужно, случаются исчезающе редко и говорят скорее об ошибках в проектировании архитектуры, чем о недостатках метода.
Александр Шустов писал(а):
если в ?# передать массив, все усложниться в разы
Префикс ?_ используется для имен таблиц, а не для полей. Зачем Вам передавать список имен таблиц в ?# ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Дмитрий Кóтеров
Администратор



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Ср Dec 20, 2006 11:07 pm (спустя 2 дня 7 часов 10 минут)
   Заголовок сообщения:
Ответить с цитатой


М

Ветка выделена в отдельную тему «DbSilly: а давайте напишем собственный SQL-парсер!»,
расположенную в форуме Мусоропровод (20 Декабря 2006, 23:07).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
zuzmic
Заглянувший



Зарегистрирован: 25.12.2006
Сообщ.: 1
Карма: 0
   поощрить/наказать


СообщениеДобавлено: Вт Dec 26, 2006 12:06 am (спустя 5 дней 59 минут; написано за 1 минуту 51 секунду)
   Заголовок сообщения:
Ответить с цитатой

Прошу прощения, если я написал не в ту ветку.
Хочу спросить DBSimple есть в варианте совместимом с PHP5 ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Зарегистрирован: 12.06.2004
Сообщ.: 2265
Карма: 110
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Вт Dec 26, 2006 12:35 am (спустя 29 минут; написано за 1 минуту 20 секунд)
   Заголовок сообщения:
Ответить с цитатой

zuzmic писал(а):
Хочу спросить DBSimple есть в варианте совместимом с PHP5 ?
Он совместим с PHP4, а следовательно совместим с PHP5. У меня на 5.1.6 работает превосходно!
С 5.2 могут быть (и скорее всего будут) проблемы, ибо обратная совместимость 5.2 во многом утеряна.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
Дмитрий Кóтеров
Администратор



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Чт Dec 28, 2006 4:29 pm (спустя 2 дня 15 часов 53 минуты)
   Заголовок сообщения:
Ответить с цитатой


М

Ветка выделена в отдельную тему «DbSimple: передача атрибутов через массив, а не в тексте запроса»,
расположенную в форуме Разное :: PHP (28 Декабря 2006, 16:29).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
chin
Участник форума



Зарегистрирован: 23.02.2005
Сообщ.: 312
Карма: 26
   поощрить/наказать

Откуда: Украина, Киев

СообщениеДобавлено: Вт Янв 09, 2007 2:20 am (спустя 11 дней 9 часов 51 минуту; написано за 1 минуту 19 секунд)
   Заголовок сообщения:
Ответить с цитатой

Господа, ответьте, пожалуйста.
chin писал(а):
Где мы явно указываем изменение таблицы tree.
Это важный вопрос для меня. Какие мысли по этому поводу?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора ICQ Number
Дмитрий Кóтеров
Администратор



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Пт Янв 12, 2007 9:45 am (спустя 3 дня 7 часов 24 минуты; написано за 2 минуты 1 секунду)
   Заголовок сообщения:
Ответить с цитатой

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

Вероятно, стоит сделать поддержку его прямо в библиотеке, т.е. дать возможность в setCacher() передавать прямо объект класса Cache_Light (method_exists($cacher, 'get') && method_exists($cacher, 'save')), а не только имя функции-кэшера. Так будет совсем универсально и благостно для буржуев. ;-)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Дмитрий Кóтеров
Администратор



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Сб Янв 13, 2007 3:39 pm (спустя 1 день 5 часов 54 минуты)
   Заголовок сообщения:
Ответить с цитатой


М

Ветка выделена в отдельную тему «DbSimple и кэширование.»,
расположенную в форуме Конструктор (13 Января 2007, 15:39).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Дмитрий Кóтеров
Администратор



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Сб Янв 13, 2007 3:43 pm (спустя 4 минуты)
   Заголовок сообщения:
Ответить с цитатой


М

Ветка выделена в отдельную тему «DbSimple: устаревшие сообщения.»,
расположенную в форуме Мусоропровод (13 Января 2007, 15:43).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Михаил Саяпин
Гость





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


СообщениеДобавлено: Вт Янв 16, 2007 12:11 pm (спустя 2 дня 20 часов 28 минут; написано за 1 минуту 39 секунд)
   Заголовок сообщения:
Ответить с цитатой

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

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



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Вт Янв 16, 2007 12:18 pm (спустя 6 минут; написано за 43 секунды)
   Заголовок сообщения:
Ответить с цитатой

Что же у Вас там за выборка такая огормная, что она в память не влезает... Может быть, неправильная логика скрипта? Например, выбираете ВСЕ записи, вместо того, чтобы выбрать 1 страницу?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






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


СообщениеДобавлено: Ср Янв 17, 2007 9:54 pm (спустя 1 день 9 часов 36 минут; написано за 1 минуту 17 секунд)
   Заголовок сообщения:
Ответить с цитатой

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



Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405
   поощрить/наказать


СообщениеДобавлено: Чт Янв 18, 2007 12:14 am (спустя 2 часа 19 минут; написано за 39 секунд)
   Заголовок сообщения:
Ответить с цитатой

http://dklab.ru/lib/DbSimple/manual.html

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

Вообще, у меня есть такое убеждение, что необходимость получения метаданных базы свидетельствует об ошибке в архитектуре системы.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начaть нoвую тeму   Ответить на тему Часовой пояс: GMT + 3 (Москва)
На страницу 1, 2, 3 ... 10, 11, 12  След.
Страница 1 из 12   
Ответить
Имя
Тема
     

Отключить в этом сообщении BBCode
Отключить в этом сообщении смайлики
    HTML ВЫКЛЮЧЕН
BBCode ВКЛЮЧЕН
Смайлики ВКЛЮЧЕНЫ
Вы не можете начинать темы. Вы можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать в опросах. Вы не можете прилагать файлы к сообщениям. Вы можете скачивать файлы.
  XML