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_rowsdupă unUPDATEsauDELETE. Acolo rezultatul estetrue, nu unmysqli_result, și primeștiTypeError. Foloseștemysqli_affected_rows.
Comenzi înrudite
mysqli_affected_rows: Returnează câte rânduri au fost modificate de ultimul INSERT, UPDATE, DELETE sau REPLACE.mysqli_query: Trimite o interogare SQL către baza de date. Pentru SELECT returnează un rezultat din care citești rândurile.mysqli_fetch_assoc / mysqli_fetch_all / mysqli_fetch_array: Citește următorul rând dintr-un rezultat, ca tablou cu numele coloanelor drept chei.count: Returnează numărul de elemente dintr-un tablou.