Подскажите, пожалуйста. Вызвал две хранимые процедуры и получаю такую ошибку: "Commands out of sync; you can't run this command now"

Подскажите, пожалуйста. Вызвал две хранимые процедуры и получаю такую ошибку: "Commands out of sync; you can't run this command now". Как вызвать две процедуры, избежав эту ошибку? Первая процедура возвращает данные, вторая естественно нет. Пример кода указал ниже

<?php
switch($route) {
    case ($route[0] == 'my' AND $route[1] == 'cart'):
        $result = mysqli_query($conn, "CALL get_shopping_cart_contents('$uid')");
        $resultAddress = mysqli_query($conn, "CALL get_address('$uid')");
        if(!$resultAddress) echo mysqli_error($conn);
        if(!$result) echo mysqli_error($conn);
        if(mysqli_num_rows($result) > 0) {
            include './views/list_cart.php';
        }else {
            include './views/emptycart.php';
        }
        break;
}
}
?>

Ответы (1 шт):

Автор решения: Максим

Нашел ответ на данный вопрос, вдруг кому-то пригодится. Пришлось использовать "mysqli_multi_query"

Так делать не рекомендуется из-за безопасности, можно использовать подготавливаемые запросы, но если нужно срочно и прямо сейчас, сойдет.

Для удобства использования создал функцию, которая принимает запрос(ы), обрабатывает и выдает результат данных сразу в массиве.

function multiSelect($query) {
    global $conn;
    $queryResult = [];
    $result = mysqli_multi_query($conn, $query);

    do {
        /* сохранить набор результатов в PHP */
       if ($result = mysqli_store_result($conn)) {
           while ($row = mysqli_fetch_assoc($result)) {
               $queryResult[] = $row;
           }
       }
    } while (mysqli_next_result($conn));

    return $queryResult;
}
→ Ссылка