За последние 24 часа нас посетили 18328 программистов и 1634 робота. Сейчас ищет 1671 программист ...

goDB — библиотека работы с MySQL

Тема в разделе "Решения, алгоритмы", создана пользователем vasa_c, 10 фев 2008.

  1. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    vasa_c, и что ты упростил внеся фетчинг в функцию запроса?
     
  2. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Упростил основной цикл выполнения запроса:
    1. Сформировать запрос на основании шаблона и данных
    2. Выполнить
    3. Получить результат в нужном формате

    Я это объеденил в один вызов. А проверки и разбор результата свёл к одному аргументу
     
  3. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    то есть такая запись
    $db->query( '...', array( ... ), 'rowassoc' )
    проще чем такая
    $db->query( '...', array( ... ) )->rowAssoc
    я правильно понял?
     
  4. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Что такое rowAssoc? свойство?
     
  5. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    свойство или метод
     
  6. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Да, по моему извращённому мнению, такая запись проще чем такая.
    Впрочем, я полностью осознаю, что по вашему мнению может быть иначе, и ничего не вам не навязываю.
    Также по моему мнению, этот спор не стоит высосанного х.йца.
     
  7. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    ути-пути, у птенчика собственное мнение прорезалось х) мы уже такие взрослые и самостоятельные *о* вот только ИДЕ с автокомплитом пользоваться еще не обучены. печальки =(
     
  8. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Как видно аргументы закончились, дальше пошёл поток гноя...
     
  9. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
  10. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    vasa_c
    Посмотрел разработку. Интересно, но некоторых элементарных вещей по-прежнему не хватает (или я не нашел)?
    Например, мне надо добавить запись в таблицу:
    PHP:
    1. <?php
    2.  
    3. $table="users";
    4.  
    5. $values=array(
    6.   "username"=>"vasa_c",
    7.   "usergroupid"=>1,
    8.   "password"=>"d9433f4aa4c64a06bdec4e987182853c",
    9.   "email"=>"vasa_c@mail.ru");
    Как это сделать в goDB? Я не придумал ничего лучше вставки части запроса (?q):
    PHP:
    1. <?php
    2.  
    3. foreach($values as $field=>$value) $values[$field]="'".addslashes($value)."'";
    4. $fields=implode(",",array_keys($values));
    5. $values=implode(",",$values);
    6. $pattern="INSERT INTO ?t (?q) VALUES (?q)";
    7. $data=array($table,$fields,$values);
    8. $result=$db->query($pattern,$data);
    То есть даже с goDB все приходится делать вручную - экранировать, собирать запрос... это же жутко неудобно.
    Я то же самое делаю одной строкой:
    PHP:
    1. <?php
    2.  
    3. $result=$database->addLine($table,$values);
     
  11. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    PHP:
    1. $values=array(
    2.     "username"=>"vasa_c",
    3.     "usergroupid"=>1,
    4.     "password"=>"d9433f4aa4c64a06bdec4e987182853c",
    5.     "email"=>"vasa_c@mail.ru"
    6. );
    7. $pattern = 'INSERT INTO ?t SET ?s';
    8. $data = array($table, $values);
    9. $db->query($pattern, $data);
     
  12. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    vasa_c
    То есть пользоваться общепринятым синтаксисом для команды INSERT не получится? Только SET вариант?
    Впрочем, это все равно гораздо лучше, чем то, что я написал выше. ;) Спасибо за ответ.
     
  13. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    SET не менее общепринят + он намного нагляднее.

    Для вставки же списка значений в VALUES есть плейсхолдер ?l (?list), который сработает и с этим массивом, другое дело, что список столбцов придётся всё равно формировать отдельно.

    Могу сделать и плейсхолдер для списка столбцов, но чтобы тянуть значения для двух плейсхолдеров из одной переменной по-всякому придётся использовать именованные плейсхолдеры.
     
  14. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    vasa_c
    Мне кажется, что для такой популярной операции, как INSERT, надо просто-напросто предусмотреть отдельный метод. Ведь даже с упрощенным синтаксисом каждый раз снова и снова писать 'INSERT INTO ...' - как-то не совсем соответствует понятиям об удобной работе.

    Ну, можно ведь и так:
    PHP:
    1. <?php
    2.  
    3. array($table, array_keys($values), $values)
    Хотя это тоже не идеал :)
     
  15. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    метод для инсерт, метод для селект, метод для удаления, метод для COUNT, метод для TRUNCATE, и получится query-builder в итоге
     
  16. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    vasa_c
    нет, получиться абстрация надо goDB - вполне нормальное решение... ты ж видел мою DB, почти то же самое, так вот это можно соединить в маппер, которые будет знать метаданные, тогда получается во первых удобный интерфейс, который каждый может сделать для себя, а во вторых сокрытие наличия обращений к базе данных.
    Так что не надо нагромождать это точно.
     
  17. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    Выбираем goDB ))!
     
  18. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    vasa_c
    Дык goDB - уже query-builder в чистом виде. Просто станет чуть удобнее. :)
    Я человек ленивый и не люблю двадцать раз писать одно и то же, даже если это паттерн для запроса INSERT INTO.

    Костян
    Это было типа "слава Сталину", чтобы не арестовали? :D
     
  19. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    возьмите Котеровскую dbsimple если так хочется взять хорошую обёртку. и не надо изобретать велосипедов, ога.
     
  20. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Mr.M.I.T.
    Точно, все берите Петра от Церетели и нефиг своей скульптурой заниматься ;)
     
  21. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Dagdamor
    Звучит фраза конечно пафосно, но зерно здравого смысла в ней определённо есть... Особенно если учесть что мы имеем дело не с искусством а с техникой...
     
  22. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Mr.M.I.T., ога, ога, ога, чага-чага
     
  23. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    Mr.M.I.T. и что в ней хорошего?
     
  24. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    А Я согласен со всем, что говорит Mr.M.I.T.. Он - мужик!
     
  25. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Наверное следующее:
    1. Там обильно и качественно используется конструкция switch
    2. В целях поддержки PHP4 там нет такого ужаса, как исключения

    Так кто же сомневается? Mr.M.I.T. наше всё.