mysqli_next_result în PHP

Trece la următorul rezultat al unui mysqli_multi_query, ca să îl poți citi.

Sintaxă
mysqli_next_result(mysqli $mysql): bool

Ce face mysqli_next_result

După mysqli_next_result, rezultatul curent se citește cu mysqli_store_result sau mysqli_use_result. Dacă una dintre comenzile următoare are o eroare, ea apare aici: din PHP 8.1, ca mysqli_sql_exception.

Exemplele de pe această pagină folosesc baza de date magazin, cu tabelul produse (coloanele id INT AUTO_INCREMENT, nume VARCHAR(100) NOT NULL, pret INT și stoc INT) și patru rânduri: Laptop (3200 lei, 5 buc.), Mouse (80 lei, 40 buc.), Monitor (900 lei, 0 buc.) și Tastatură (150 lei, 12 buc.). Comenzile SQL sunt explicate în secțiunea MySQL. Rezultatele au fost scrise pentru MySQL 8, pentru că exemplele au nevoie de un server de baze de date.

Parametri

Parametru Descriere
$mysql Conexiunea.

Ce returnează

true la succes, false dacă nu mai sunt rezultate.

Exemple

Exemplul 1: O comandă greșită în mijloc

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

mysqli_multi_query($conn, "SELECT 1; SELECT * FROM produs; SELECT 3");

try {
    do {
        if ($r = mysqli_store_result($conn)) {
            echo "Rezultat: " . mysqli_fetch_row($r)[0] . "\n";
        }
    } while (mysqli_more_results($conn) && mysqli_next_result($conn));
} catch (mysqli_sql_exception $e) {
    echo "Oprit la eroare: " . $e->getMessage();
}

Rezultat (cu un server MySQL și tabelul produse de mai sus)

Rezultat: 1
Oprit la eroare: Table 'magazin.produs' doesn't exist

Greșeli frecvente

  • Te aștepți ca comenzile de după cea greșită să ruleze. MySQL se oprește la prima eroare.

Comenzi înrudite

  • mysqli_more_results: Verifică dacă, după mysqli_multi_query, mai urmează rezultate de citit.
  • mysqli_multi_query: Trimite mai multe comenzi SQL odată, separate prin punct și virgulă.
  • mysqli_store_result: Aduce în memorie tot rezultatul ultimei interogări trimise cu mysqli_real_query sau mysqli_multi_query.