MySQLi multi_query не вернет более 1 результатов

0

Когда результат ограничен 1, все работает отлично.

Однако, когда у меня есть более одного результата... он ничего не возвращает.

$output = $conn->multi_query("CALL 'test_discount'('022979', 1101, 1, 'W', 100, @out); SELECT @out AS 'discount';");

if ($output == true){
    while($conn->next_result()){
        $result = $conn->store_result();
            while ($row = $result->fetch_assoc()){
                print_r($row);
                break;
            }                   
    if($conn->more_results() == false) { break; };
    }
}

Думаю, я делаю что-то неправильно?

  • 0
    Оператор break останавливает цикл после первой строки. Избавиться от этого.
  • 0
    Вам не нужна more_results() . Когда у вас next_result() результаты, next_result() вернет false .
Показать ещё 8 комментариев
Теги:
mysqli
multi-query
mysqli-multi-query

1 ответ

1
Лучший ответ

Если SQL выше имеет какой-то смысл, я бы предложил сначала получить данные, возвращаемые процедурой, а затем выбрать эту переменную stout @out.

$sql = "CALL 'test_discount'('022979', 1101, 1, 'W', 100, @out)";
$res = $conn->multi_query($sql);
do {
    if ($res = $mysqli->store_result()) {
        foreach ($res as $row) {
            print_r($row);
        }
    }
} while ($mysqli->more_results() && $mysqli->next_result());

$out = $conn->query("SELECT @out")->fetch_row[0];

Ещё вопросы

Сообщество Overcoder
Наверх
Меню