ФорумПрограммированиеПыхнуть хотите?Готовые решения → goDB — библиотека работы с MySQL

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

  • adw0rd

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

    Spritz 19 января 2011 г. 1:13, спустя 25 минут 22 секунды

    эх питон, питон )
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 19 января 2011 г. 1:29, спустя 15 минут 44 секунды

    charset Указывает кодировку. Не нужно делать вручную SET NAMES


    его и так делать не нужно
  • vasa_c

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

    Spritz 19 января 2011 г. 11:58, спустя 10 часов 28 минут 39 секунд

    думаю, тут ошибка, наверное $result, а не result

    да, спасибо

    его и так делать не нужно

    спасибо за отзыв, если бы вы сделали бы его более развёрнутым, было бы лучше.
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 19 января 2011 г. 13:06, спустя 1 час 8 минут 28 секунд


    думаю, тут ошибка, наверное $result, а не result

    да, спасибо

    его и так делать не нужно

    спасибо за отзыв, если бы вы сделали бы его более развёрнутым, было бы лучше.


    bool mysql_set_charset (string $charset [, resource $link_identifier])

    mysql_set_charset() функция устанавливает кодировку по умолчанию для текущего соединения.

    Замечание: Функция работает с MySQL 5.0.7 или выше версиями
    Это предпочтительный способ сменить кодировку.
    Использование mysql_query() чтобы выполнить SET NAMES… не рекомендуется.
  • vasa_c

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

    Spritz 19 января 2011 г. 13:29, спустя 22 минуты 19 секунд

    fgets, mysql_set_charset тоже не рекомендуется, рекомендуется mysqli :)
    только смысл не меняется, чтобы вызвать эту функцию, всё равно подключиться нужно сначала.
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 19 января 2011 г. 14:25, спустя 56 минут 36 секунд


    fgets, mysql_set_charset тоже не рекомендуется, рекомендуется mysqli :)
    только смысл не меняется, чтобы вызвать эту функцию, всё равно подключиться нужно сначала.


    http://php.net/manual/en/mysqli.set-charset.php

    Note: This is the preferred way to change the charset. Using mysqli::query() to execute SET NAMES .. is not recommended.

    имелось ввиду что тут на уровне пхп это делается, т.е. быстрее и проще чем SET NAMES, и да подключиться нужно
  • vasa_c

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

    Spritz 31 января 2011 г. 22:58, спустя 12 дней 8 часов 32 минуты

    1.3.2.. Пофикшен баг с итераторами.
  • vasa_c

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

    Spritz 3 апреля 2011 г. 13:22, спустя 61 день 13 часов 24 минуты

    goDB 2.0: адаптер для постгри от dallone.
  • nworm

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 13 апреля 2011 г. 12:34, спустя 9 дней 23 часа 12 минут

    Подскажите, пожалуйста.

    На сервере MySQL есть хранимые процедуры, возвращающие несколько резалтсетов. Обратиться с помощью mysqli_multi_query к ним получается, но с помощью goDB не получилось.

    Запрос вроде такого возвращает ошибку:

    $queries = array (
    'call `h_giEngInfo`(?i)'
    );
    $datas = array (array (1));

    $results = $db->multiQuery($queries, $datas, 'assoc');


    Можно ли вообще в goDB получать от хранимой процедуры несколько результирующих наборов?
  • vasa_c

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

    Spritz 13 апреля 2011 г. 12:52, спустя 18 минут 9 секунд

    Можно попробовать обратиться напрямую к mysqli-методу: $db->multi_query()
  • nworm

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 13 апреля 2011 г. 13:36, спустя 43 минуты 22 секунды

    Да. Через $db->multi_query() работает. Только разбор результата не удобный - такой же как в родном mysqli. Придётся дописывать отдельно…
  • nworm

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 13 апреля 2011 г. 13:48, спустя 12 минут 9 секунд

    А нельзя ли добавить возможность возвращения методом $db->multi_query нормальный разбор результата по аналогии с возвращаемым методом multiQuery? Или чтобы multiQuery возвращал несколько значений, генерируемых хранимой процедурой?
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 13 апреля 2011 г. 14:02, спустя 14 минут 25 секунд

    Думаю это добавится только после того, как Вася_Ц сам заимеет необходимость в такой фишке.
  • vasa_c

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

    Spritz 13 апреля 2011 г. 15:44, спустя 1 час 41 минуту 44 секунды

    А нельзя ли добавить возможность возвращения методом $db->multi_query нормальный разбор результата по аналогии с возвращаемым методом multiQuery?

    Можно попробовать через ->fetch() пропустить, но не уверен.

    Думаю это добавится только после того, как Вася_Ц сам заимеет необходимость в такой фишке.

    Ну если написать заяву с конкретным описанием проблемы, то может и попробую что-нибудь сделать )
  • nworm

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 14 апреля 2011 г. 13:20, спустя 21 час 36 минут 17 секунд

    Ок. Тогда описание проблемы:

    Хранимые процедуры в MySQL позволяют использовать для получения результата оператор SELECT. Если в процедуре несколько SELECT'ов, то сгенерируют множественный набор результатов (multiple result set).

    Выполняем запрос "CALL `h_giEngine(1)`". Функция h_giEngine(id) возвращает 5 наборов значений.

    В goDB на данный момент

    $db->query отрабатывает запрос, но возвращает только первый параметр. Без free_result дальнейшие запросы делать нельзя.

    $db->multiQuery не отрабатывает вообще. Сваливается в godb.php на строке 1200 с сообщением 'multi results > queires'. Я так понимаю это сделано для защиты от ситуации, когда у нас разное количество запросов в базу и ответных возвращаемых наборов.

    $db->multi_query отрабатывает правильно. Однако, в этом случае результирующие наборы неудобно обрабатывать. Приходится использовать такую конструкцию:

    if ($db->multi_query($query))
    {
    $r = array ();
    do
    {
    if ($result = $db->store_result())
    {
    while ($row = $result->fetch_assoc())
    {
    $r[$i][] = $row;
    }
    $result->free_result();
    }

    if ($db->more_results())
    {
    $i++;
    }
    } while ($db->next_result());
    };


    В массиве $r ассоциативный двумерный массив, подобный тому, который возвращает метод $db->multiQuery. С таким массивом потом можно относительно удобно работать.


    Таким образом можно доработать метод multiQuery, чтобы он мог возвращать несколько наборов значений (в виде соответствующего массива в зависимости от значения параметра $fetches) тогда, когда производится вызов процедуры.

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