Fonction PHP mysqli_stmt_affected_rows ()

Définition et utilisation

le mysqli_stmt_affected_rows() La fonction renvoie le nombre de lignes affectées (modifiées, supprimées, insérées) par l'instruction récemment exécutée.

Cette fonction ne fonctionne correctement que si elle est appelée après les instructions INSERT, UPDATE ou DELETE. Si vous avez besoin de connaître le nombre de lignes affectées par la requête SELECT, vous devez utiliser la fonction mysqli_stmt_num_rows () .

Syntaxe

mysqli_stmt_affected_rows($stmt)

Paramètres

Sr. Non Paramètre et description
1

stmt(Mandatory)

Il s'agit d'un objet représentant une instruction exécutant une requête SQL.

Valeurs de retour

La fonction PHP mysqli_stmt_affected_rows () renvoie une valeur entière indiquant le nombre de lignes affectées par l'opération précédente (INSERT, UPDATE, REPLACE ou DELETE).

Si l'instruction contient une erreur, cette fonction renvoie -1. S'il n'y a pas de lignes affectées, cette fonction renvoie0.

Version PHP

Cette fonction a été introduite pour la première fois dans la version 5 de PHP et fonctionne dans toutes les versions ultérieures.

Exemple

Supposons que nous ayons créé une table nommée employee dans la base de données MySQL avec le contenu suivant $ minus;

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'exemple suivant montre l'utilisation de la fonction mysqli_stmt_affected_rows () (dans le style procédural) -

<?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);
?>

Cela produira le résultat suivant -

Records Updated......
Rows affected 3

Exemple

Dans le style orienté objet, la syntaxe de cette fonction est $ con> affect_rows; Voici l'exemple de cette fonction dans le style orienté objet $ 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();

?>

Cela produira le résultat suivant -

Table Created.....
Records Inserted.....
Records Deleted.....
Rows affected 2

Exemple

Vérifions les valeurs de retour de ceci si la requête n'affecte aucune ligne -

<?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);

?>

Cela produira le résultat suivant -

Table Created.....
Records Inserted.....
Rows affected (when query does nothing): 0