Перейти к содержимому

Следующий результат

В этой статье мы рассмотрим функцию mysqli_next_result() в PHP, которая используется для перехода к следующему набору результатов после выполнения нескольких запросов с помощью mysqli_multi_query().

Введение в функцию mysqli_next_result()

Функция mysqli_next_result() — это встроенная функция PHP, которая перемещает указатель результата на следующий набор результатов при выполнении нескольких запросов с помощью mysqli_multi_query(). Она возвращает логическое значение, указывающее на успех или неудачу.

Как использовать функцию mysqli_next_result()

Чтобы использовать mysqli_next_result(), выполните запросы с помощью mysqli_multi_query(), а затем переберите результаты. Рекомендуется проверять наличие результатов с помощью mysqli_more_results() перед вызовом mysqli_next_result(), чтобы избежать предупреждений от запросов, не возвращающих результат (например, INSERT или UPDATE). Вот пример:

Как использовать функцию mysqli_next_result()?

php
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

if (!$mysqli) {
    die("Connection failed: " . mysqli_connect_error());
}

$query = "SELECT * FROM table1; SELECT * FROM table2; SELECT * FROM table3;";

if (mysqli_multi_query($mysqli, $query)) {
    do {
        /* process current result set */
        if ($result = mysqli_store_result($mysqli)) {
            // process result set
            mysqli_free_result($result);
        }
    } while (mysqli_more_results($mysqli) && mysqli_next_result($mysqli));
} else {
    echo "Multi-query failed: " . mysqli_error($mysqli);
}

mysqli_close($mysqli);
?>

В этом примере мы устанавливаем соединение с обработкой ошибок, а затем выполняем несколько запросов с помощью mysqli_multi_query(). Цикл do...while проверяет mysqli_more_results(), чтобы безопасно переходить к каждому набору результатов с помощью mysqli_next_result(), предотвращая предупреждения от запросов без результата. mysqli_store_result() используется здесь для загрузки набора результатов в память, но это необязательно; для больших наборов данных mysqli_use_result() или прямая выборка могут быть более эффективными по памяти. Наконец, мы закрываем соединение с помощью mysqli_close().

Заключение

В заключение, функция mysqli_next_result() — это полезный инструмент для перехода к следующему набору результатов при обработке нескольких запросов с помощью mysqli_multi_query(). Понимание того, как использовать эту функцию вместе с mysqli_more_results(), позволяет эффективно выполнять и обрабатывать несколько запросов с помощью расширения MySQLi для PHP.

Практика

Что делает функция PHP mysqli::next_result?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.