mysqli_stmt_affected_rows în PHP

Returnează câte rânduri a modificat ultima execuție a unei interogări pregătite (INSERT, UPDATE, DELETE).

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

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 SELECT fără mysqli_stmt_store_result. Valoarea nu este numărul de rânduri; pentru asta folosește mysqli_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.