ФорумПрограммированиеПыхнуть хотите?Готовые решения → Библиотека для БД II

Библиотека для БД II

  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 10 января 2008 г. 3:55, спустя 4 дня 2 часа 7 минут

    Версия 0.0.1:
    Добавлен формат со списком:

    $names = Array('one', 'two', 'three');
    DB::queryDB('select * from ?t where ?c in (?a)', Array('t', 'name', $names)); // select * from `t` where `name` in ("one","two","three")

    $ids = Array(3, 4, 7);
    DB::queryDB('select * from ?t where ?c in (?ai)', Array('t', 'id', $ids)); // select * from `t` where `id` in (3,4,7) , аналогично ?ia
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 10 января 2008 г. 4:08, спустя 12 минут 4 секунды

    А как насчет поддержки работы с транзакциями? Очень не хватает …
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 10 января 2008 г. 4:25, спустя 17 минут 35 секунд

    А в каком виде?
    Это же на уровне SQL или mysqli делается, кажется.
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 10 января 2008 г. 4:38, спустя 12 минут 24 секунды

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

    $t_num = $DB->StartTransaction();
    $DB->queryDB( …, $t_num);
    $DB->queryDB( …, $t_num);
    $DB->queryDB( …, $t_num);
    $result = $DB->Commit($t_num);

    Ну и параметр $t_num если не нужно несколько транзакций параллельно, можно не передавать (используется последняя).
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 5 февраля 2008 г. 2:55, спустя 25 дней 22 часа 17 минут

    vasa_c, как успехи с маном?
    adw/0
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 5 февраля 2008 г. 3:21, спустя 26 минут 25 секунд

    В процессе.
    Можешь зарецензировать, то что пока есть )
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 5 февраля 2008 г. 3:53, спустя 31 минуту 17 секунд

    А бенчмарки провел? )
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 5 февраля 2008 г. 4:57, спустя 1 час 4 минуты 46 секунд


    А бенчмарки провел? )

    нет еще :)))
    adw/0
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 5 февраля 2008 г. 5:02, спустя 4 минуты 28 секунд

    В "Идеология и основные принципы" / "Формирование запроса" - приведи примеры конструкции "При работе напрямую с mysql-функциями" и с помощью "goDB", будет нагляднее! Можно еще и mysqli.

    В каждом пункте оглавления надо сделать ссылку на следующий пункт, то есть прочитали "Идеология и основные принципы", внизу ссылка на "Выполнение запроса" :))

    В "Выполнение запроса" ты расписал:
    mixed $db->query(string $pattern [, array $data [, string $fetch [, string $prefix])

    Предлагаю расписать в виде списка все типы плейсхолдеров и вкратце для чего они.
    А также рассказать для чего нужен аргумент "$prefix".
    adw/0
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 6 февраля 2008 г. 6:29, спустя 1 день 1 час 27 минут

    Смотрю уже внес мои предложения, ну а целом как говорит olyapka - "рескепт"! И либа и ман! :)))
    adw/0
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 6 февраля 2008 г. 6:31, спустя 2 минуты 15 секунд


    А бенчмарки провел? )


    Займусь на неделе :)
    Сейчас делаю ПМ для пыхофорума, по шаблону md5.
    adw/0
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 20 мая 2008 г. 3:15, спустя 103 дня 19 часов 43 минуты

    В общем, тут нам понадобилась БД-библиотечка для одного проекта, мы заюзали goDB и малость ее поправили. Правил мой коллега, но он не любит в форумах писать, так что пишу я. Файлы перекодированы в win-1251. Кому надо UTF-8 перекодируйте самостоятельно. Может кому что пригодится, а может vasa_c сочтет нужным добавить что-то в следующий свой релиз.

    Итак, помимо нескольких мелких правок кода, основные фичи это:

    1. Добавлено два формата вывода результата: kcol и kassoc, такие же как col и assoc только в качестве ключа возвращаемого масива исполльзуется значение первого поля. (Делается соответствующая проверка и если в запросе одно поле, то формат меняется на col).
    2. Метод query слегда переделан таким образом, что если включена опция querydebug, то плохой запрос будет распечатан красными буквами (Очень удобно при большом потоке запросов).

    Добавлен наследуемый класс db_se с дополнительными функциями
    1. Поддержка транзакций. Методы startTransaction и endTransaction. Можно использовать метод Transaction, который сам разбирается, что делать при чередовании его вызовов.
    2. Добавлены методы Delete, Insert, Update и специальный метод SmartInsert, который посылает запрос "INSERT … ON DUPLICATE KEY UPDATE …"  Т.е. если данные в таблице уже есть (определяется по PRIMARY KEY), они обновляются, если нет - добавляются.

    Желающие могут все объединить в один класс.

    Для сравнения правок в двух файлах есть отличная программа Araxis Merge (очень рекомендую, просто супер программа). Если кто хочет точно сравнить исходную библиотеку с нашей правленной могу, то могу поделится.



    1. db.zip (76)
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 20 мая 2008 г. 4:44, спустя 1 час 29 минут 23 секунды

    Что-то с аттачами.
    Выложил файл здесь: http://pyha.ru/forum/u/db.zip
    Сейчас посмотрю
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 21 мая 2008 г. 5:58, спустя 1 день 1 час 13 минут

    Хоть бы кто сказал что. Хотя бы в стиле: "Взяли гады, испортили хорошую вещь" … =)
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 21 мая 2008 г. 6:00, спустя 1 минуту 59 секунд

    Взяли, гады, испортили хорошую вещь!
    © AB
    все умрут, а я изумруд

Пожалуйста, авторизуйтесь, чтобы написать комментарий!