mysqli_num_rows în PHP

Returnează numărul de rânduri dintr-un rezultat SELECT.

Sintaxă
mysqli_num_rows(mysqli_result $result): string|int

Ce face mysqli_num_rows

mysqli_num_rows spune câte rânduri a întors un SELECT. Cel mai des se folosește pentru a verifica dacă există rezultate (de exemplu dacă un email este deja înregistrat) sau pentru a afișa „N rezultate găsite”.

Dacă vrei doar să numeri, este mai eficient să lași serverul să numere: SELECT COUNT(*) FROM ..., în loc să aduci toate rândurile în PHP. Pentru UPDATE și DELETE folosește mysqli_affected_rows.

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
$result Rezultatul unui SELECT.

Ce returnează

Numărul de rânduri (ca text doar dacă depășește valoarea maximă a unui int).

Exemple

Exemplul 1: Câte rezultate a găsit căutarea

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

$rezultat = mysqli_query($conn, "SELECT id FROM produse WHERE stoc > 0");
echo mysqli_num_rows($rezultat) . " produse disponibile";

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

3 produse disponibile

Exemplul 2: Verificarea unui email deja folosit

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

$email = "ana@exemplu.ro";
$rezultat = mysqli_execute_query($conn, "SELECT id FROM utilizatori WHERE email = ?", [$email]);

if (mysqli_num_rows($rezultat) > 0) {
    echo "Există deja un cont cu adresa $email.";
}

Rezultat (cu un server MySQL și un utilizator cu acest email)

Există deja un cont cu adresa ana@exemplu.ro.

Greșeli frecvente

  • Folosești mysqli_num_rows după un UPDATE sau DELETE. Acolo rezultatul este true, nu un mysqli_result, și primești TypeError. Folosește mysqli_affected_rows.

Comenzi înrudite