Funzione PHP mysqli_stmt_affected_rows ()
Definizione e utilizzo
Il mysqli_stmt_affected_rows() restituisce il numero di righe interessate (modificate, eliminate, inserite) dall'istruzione eseguita di recente.
Questa funzione funziona correttamente solo se richiamata dopo le istruzioni INSERT, UPDATE o DELETE. Se è necessario conoscere il numero di righe interessate dalla query SELECT, è necessario utilizzare la funzione mysqli_stmt_num_rows () .
Sintassi
mysqli_stmt_affected_rows($stmt)
Parametri
Suor n | Parametro e descrizione |
---|---|
1 | stmt(Mandatory) Questo è un oggetto che rappresenta un'istruzione che esegue una query SQL. |
Valori restituiti
La funzione mysqli_stmt_affected_rows () di PHP restituisce un valore intero che indica il numero di righe interessate dalla precedente operazione (INSERT, UPDATE, REPLACE o DELETE).
Se l'istruzione ha un errore, questa funzione restituisce -1. Se non sono presenti righe interessate, questa funzione restituisce0.
Versione PHP
Questa funzione è stata introdotta per la prima volta nella versione 5 di PHP e funziona in tutte le versioni successive.
Esempio
Supponiamo di aver creato una tabella denominata dipendente nel database MySQL con il seguente contenuto $ meno;
mysql> select * from employee;
+------------+--------------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |
+------------+--------------+------+------+--------+
| Vinay | Bhattacharya | 20 | M | 21000 |
| Sharukh | Sheik | 25 | M | 23300 |
| Trupthi | Mishra | 24 | F | 51000 |
| Sheldon | Cooper | 25 | M | 2256 |
| Sarmista | Sharma | 28 | F | 15000 |
+------------+--------------+------+------+--------+
5 rows in set (0.00 sec)
L'esempio seguente mostra l'utilizzo della funzione mysqli_stmt_affected_rows () (in stile procedurale) -
<?php
$con = mysqli_connect("localhost", "root", "password", "mydb");
$stmt = mysqli_prepare($con, "UPDATE employee set INCOME=INCOME-? where INCOME>=?");
mysqli_stmt_bind_param($stmt, "si", $reduct, $limit);
$limit = 20000;
$reduct = 5000;
//Executing the statement
mysqli_stmt_execute($stmt);
print("Records Updated......\n");
//Affected rows
$count = mysqli_stmt_affected_rows($stmt);
//Closing the statement
mysqli_stmt_close($stmt);
//Closing the connection
mysqli_close($con);
print("Rows affected ".$count);
?>
Questo produrrà il seguente risultato:
Records Updated......
Rows affected 3
Esempio
Nello stile orientato agli oggetti la sintassi di questa funzione è $ con> influenzato_rows; Di seguito è riportato l'esempio di questa funzione nello stile orientato agli oggetti $ minus;
<?php
//Creating a connection
$con = new mysqli("localhost", "root", "password", "mydb");
$con -> query("CREATE TABLE Test(Name VARCHAR(255), AGE INT)");
print("Table Created.....\n");
$con -> query("insert into Test values('Raju', 25),('Rahman', 30),('Sarmista', 27)");
print("Records Inserted.....\n");
$stmt = $con -> prepare( "DELETE FROM Test WHERE Name in(?, ?)");
$stmt -> bind_param("ss", $name1, $name2);
$name1 = 'Raju';
$name2 = 'Rahman';
print("Records Deleted.....\n");
//Executing the statement
$stmt->execute();
//Affected rows
$count = $stmt ->affected_rows;
print("Rows affected ".$count);
//Closing the statement
$stmt->close();
//Closing the connection
$con->close();
?>
Questo produrrà il seguente risultato:
Table Created.....
Records Inserted.....
Records Deleted.....
Rows affected 2
Esempio
Controlliamo i valori di ritorno di questo se la query non ha effetto su alcuna riga -
<?php
$con = @mysqli_connect("localhost", "root", "password", "mydb");
mysqli_query($con, "CREATE TABLE Test(Name VARCHAR(255), AGE INT)");
print("Table Created.....\n");
mysqli_query($con, "insert into Test values('Raju', 25),('Rahman', 30),('Sarmista', 27)");
print("Records Inserted.....\n");
$stmt = mysqli_prepare($con, "DELETE FROM test where Age<?");
mysqli_stmt_bind_param($stmt, "i", $num);
$num = 8;
//Executing the statement
mysqli_stmt_execute($stmt);
//Affected rows
$count = mysqli_stmt_affected_rows($stmt);
print("Rows affected (when query does nothing): ".$count);
//Closing the statement
mysqli_stmt_close($stmt);
//Closing the connection
mysqli_close($con);
?>
Questo produrrà il seguente risultato:
Table Created.....
Records Inserted.....
Rows affected (when query does nothing): 0