mysqli_stmt_num_rows în PHP

Returnează numărul de rânduri din rezultatul unei interogări pregătite, după mysqli_stmt_store_result.

Sintaxă
mysqli_stmt_num_rows(mysqli_stmt $statement): string|int

Ce face mysqli_stmt_num_rows

Valoarea este corectă doar după mysqli_stmt_store_result; înainte, funcția returnează 0. Dacă folosești mysqli_stmt_get_result, numărul de rânduri îl dă mysqli_num_rows pe rezultatul obținut.

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
$statement Interogarea pregătită.

Ce returnează

Numărul de rânduri.

Exemple

Exemplul 1: Verificarea existenței unui produs

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

$stmt = mysqli_prepare($conn, "SELECT id FROM produse WHERE nume = ?");
foreach (["Mouse", "Imprimantă"] as $nume) {
    mysqli_stmt_bind_param($stmt, "s", $nume);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_store_result($stmt);
    echo "$nume: " . (mysqli_stmt_num_rows($stmt) > 0 ? "există" : "nu există") . "\n";
    mysqli_stmt_free_result($stmt);
}

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

Mouse: există
Imprimantă: nu există

Greșeli frecvente

  • Citești mysqli_stmt_num_rows fără mysqli_stmt_store_result și primești mereu 0.

Comenzi înrudite

  • mysqli_stmt_store_result: Aduce în memorie tot rezultatul unei interogări pregătite, ca să poți afla numărul de rânduri și să sari între ele.
  • mysqli_num_rows: Returnează numărul de rânduri dintr-un rezultat SELECT.