Подскажите, пожалуйста. Вызвал две хранимые процедуры и получаю такую ошибку: "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;
}