Ок. Тогда описание проблемы:
Хранимые процедуры в 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) тогда, когда производится вызов процедуры.