Función PHP mysqli_stmt_affected_rows ()
Definición y uso
los mysqli_stmt_affected_rows() La función devuelve el número de filas afectadas (cambiadas, eliminadas, insertadas) por la sentencia ejecutada recientemente.
Esta función funciona bien solo si se invoca después de las declaraciones INSERT, UPDATE o DELETE. Si necesita saber el número de filas afectadas por la consulta SELECT, debe usar la función mysqli_stmt_num_rows () .
Sintaxis
mysqli_stmt_affected_rows($stmt)
Parámetros
No Señor | Descripción de parámetros |
---|---|
1 | stmt(Mandatory) Este es un objeto que representa una declaración que ejecuta una consulta SQL. |
Valores devueltos
La función PHP mysqli_stmt_affected_rows () devuelve un valor entero que indica el número de filas afectadas por la operación anterior (INSERT, UPDATE, REPLACE o DELETE).
Si la declaración tiene un error, esta función devuelve -1. Si no hay filas afectadas, esta función devuelve0.
Versión PHP
Esta función se introdujo por primera vez en PHP Versión 5 y funciona en todas las versiones posteriores.
Ejemplo
Supongamos que hemos creado una tabla llamada employee en la base de datos MySQL con el siguiente contenido $ menos;
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)
El siguiente ejemplo demuestra el uso de la función mysqli_stmt_affected_rows () (en estilo procedimental):
<?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);
?>
Esto producirá el siguiente resultado:
Records Updated......
Rows affected 3
Ejemplo
En el estilo orientado a objetos, la sintaxis de esta función es $ con- >jected_rows; A continuación se muestra el ejemplo de esta función en el estilo orientado a objetos $ 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();
?>
Esto producirá el siguiente resultado:
Table Created.....
Records Inserted.....
Records Deleted.....
Rows affected 2
Ejemplo
Revisemos los valores de retorno de esto si la consulta no afecta ninguna fila -
<?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);
?>
Esto producirá el siguiente resultado:
Table Created.....
Records Inserted.....
Rows affected (when query does nothing): 0