mysqli_more_results în PHP

Verifică dacă, după mysqli_multi_query, mai urmează rezultate de citit.

Sintaxă
mysqli_more_results(mysqli $mysql): bool

Ce face mysqli_more_results

Funcția nu mută nimic; doar spune dacă există un rezultat următor. Se folosește în condiția unei bucle do ... while, împreună cu mysqli_next_result.

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 dacă mai sunt rezultate.

Exemple

Exemplul 1: Câte comenzi au rulat

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

mysqli_multi_query($conn, "UPDATE produse SET stoc = stoc + 1 WHERE id = 1; UPDATE produse SET stoc = stoc + 1 WHERE id = 2; SELECT SUM(stoc) FROM produse");

$comenzi = 1;
while (mysqli_more_results($conn)) {
    mysqli_next_result($conn);
    $comenzi++;
    if ($r = mysqli_store_result($conn)) {
        echo "Stoc total: " . mysqli_fetch_row($r)[0] . "\n";
    }
}
echo "Comenzi rulate: $comenzi";

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

Stoc total: 59
Comenzi rulate: 3

Greșeli frecvente

  • Folosești mysqli_more_results după un mysqli_query obișnuit. Răspunsul este mereu false; funcția are sens doar după mysqli_multi_query sau după CALL.

Comenzi înrudite

  • mysqli_next_result: Trece la următorul rezultat al unui mysqli_multi_query, ca să îl poți citi.
  • mysqli_multi_query: Trimite mai multe comenzi SQL odată, separate prin punct și virgulă.