Ce face mysqli_stmt_affected_rows
Este varianta pentru interogări pregătite a lui mysqli_affected_rows. Are aceleași reguli: la UPDATE se numără doar rândurile schimbate efectiv, iar -1 înseamnă eroare.
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ă și executată. |
Ce returnează
Numărul de rânduri modificate.
Exemple
Exemplul 1: Reducere pentru produsele scumpe
<?php
$conn = mysqli_connect("localhost", "ana", "parola_ta", "magazin");
$stmt = mysqli_prepare($conn, "UPDATE produse SET pret = pret - ? WHERE pret > ?");
$reducere = 50;
$prag = 500;
mysqli_stmt_bind_param($stmt, "ii", $reducere, $prag);
mysqli_stmt_execute($stmt);
echo "Produse reduse: " . mysqli_stmt_affected_rows($stmt);
Rezultat (cu un server MySQL și tabelul produse de mai sus)
Produse reduse: 2
Greșeli frecvente
- Folosești funcția după un
SELECTfărămysqli_stmt_store_result. Valoarea nu este numărul de rânduri; pentru asta foloseștemysqli_stmt_num_rows.
Comenzi înrudite
mysqli_affected_rows: Returnează câte rânduri au fost modificate de ultimul INSERT, UPDATE, DELETE sau REPLACE.mysqli_stmt_insert_id: Returnează id-ul AUTO_INCREMENT generat de ultima execuție a unei interogări pregătite INSERT.mysqli_prepare: Pregătește o interogare SQL cu semne ? în loc de valori. Este metoda sigură împotriva SQL injection.