mysqli_stmt_next_result în PHP

mysqli avansat PHP 5.3+

Trece la următorul rezultat al unei interogări pregătite care întoarce mai multe rezultate.

Sintaxă
mysqli_stmt_next_result(mysqli_stmt $statement): bool

Ce face mysqli_stmt_next_result

Se folosește împreună cu mysqli_stmt_more_results, într-o buclă do ... while, ca să parcurgi toate rezultatele unei proceduri stocate. După trecere, rezultatul curent se citește cu mysqli_stmt_get_result sau cu mysqli_stmt_bind_result.

Parametri

Parametru Descriere
$statement Interogarea pregătită și executată.

Ce returnează

true dacă a trecut la următorul rezultat.

Exemple

Exemplul 1: Numărarea rezultatelor unei proceduri

Pentru procedura raport de pe pagina mysqli_stmt_more_results. MySQL adaugă la final un rezultat fără rânduri, cu starea apelului.

<?php
$conn = mysqli_connect("localhost", "ana", "parola_ta", "magazin");

$stmt = mysqli_prepare($conn, "CALL raport(100)");
mysqli_stmt_execute($stmt);

$total = 0;
$cuRanduri = 0;
do {
    $total++;
    if ($rezultat = mysqli_stmt_get_result($stmt)) {
        $cuRanduri++;
        mysqli_free_result($rezultat);
    }
} while (mysqli_stmt_more_results($stmt) && mysqli_stmt_next_result($stmt));

echo "Rezultate: $total, dintre care cu rânduri: $cuRanduri";

Rezultat (cu un server MySQL și procedura raport)

Rezultate: 3, dintre care cu rânduri: 2

Greșeli frecvente

  • Apelezi mysqli_stmt_next_result fără să verifici mysqli_stmt_more_results și fără să tratezi false. Bucla trebuie să se oprească atunci când funcția returnează false.

Comenzi înrudite

  • mysqli_stmt_more_results: Verifică dacă o interogare pregătită mai are rezultate de citit, de exemplu de la o procedură stocată.
  • mysqli_next_result: Trece la următorul rezultat al unui mysqli_multi_query, ca să îl poți citi.