English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel PHP de base

Tutoriel PHP avancé

PHP & MySQL

Manuel de référence PHP

Utilisation et exemple de la fonction PHP mysqli_stmt_affected_rows()

PHP MySQLi Référence Manuel

La fonction mysqli_stmt_affected_rows() de PHP renvoie le nombre total de lignes modifiées, supprimées ou insérées par la dernière instruction exécutée.

Définition et utilisation

mysqli_stmt_affected_rows()La fonction renvoie le nombre de lignes affectées par la dernière instruction exécutée (modifications, suppressions, insertions).

Cette fonction fonctionne correctement uniquement après l'appel d'une instruction INSERT, UPDATE ou DELETE. Si vous avez besoin de connaître le nombre de lignes affectées par une requête SELECT, vous devez utiliser mysqli_stmt_num_rows() Fonction.

Syntaxe

mysqli_stmt_affected_rows($stmt)

Paramètre

NuméroParamètres et explications
1

stmt(obligatoire)

C'est l'objet de l'instruction exécutant la requête SQL.

Valeur de retour

La fonction mysqli_stmt_affected_rows() de PHP renvoie une valeur entière qui indique 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-1Si aucune ligne affectée n'est trouvée, cette fonction renvoie0

PHP version

Cette fonction a été initialement créée dans la version PHP5中引入的,并且可以在所有更高版本中使用。

Exemple en ligne

假设我们已经在MySQL数据库中创建了一个名为employee的表,其内容如下:

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)

以下示例演示了mysqli_stmt_affected_rows()函数的用法(面向过程风格),执行update更新数据后,返回受影响的行数:

<?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;
   //Exécuter l'instruction
   mysqli_stmt_execute($stmt);
   print("已更新的记录......\n");
   //Nombre de lignes affectées
   $count = mysqli_stmt_affected_rows($stmt);
   //Fin de l'instruction
   mysqli_stmt_close($stmt);
   //Fermer la connexion
   mysqli_close($con);
   print("受影响的行 " . $count);
?>

Résultat de la sortie

已更新的记录......
Nombre de lignes affectées 3

Exemple en ligne

在面向对象风格中,此函数的语法为$con-> affected_rows;。以下是面向对象风格中此函数的示例,执行delete删除数据后,返回受影响的行数:

<?php
   //建立连接
   $con = new mysqli("localhost", "root", "password", "mydb");
   $con -> query("CREATE TABLE Test(Name VARCHAR(255), AGE INT");
   print("Création de la table.....\n");
   $con -> query("insert into Test values('Raju', 25),('Rahman', 30),('Sarmista', 27);
   print("Insertion des enregistrements.....\n");
   $stmt = $con -> prepare("DELETE FROM Test WHERE Name in(?, ?)");
   $stmt -> bind_param("ss", $name1, $name2);
   $name1 ='Raju';
   $name2 ='Rahman';
   print("Enregistrement supprimé.....\n");
   //Exécuter l'instruction
   $stmt->execute();
   //Nombre de lignes affectées
   $count = $stmt ->affected_rows;
   print("Nombre de lignes affectées ".$count);
   //Fin de l'instruction
   $stmt->close();
   //Fermer la connexion
   $con->close();
?>

Résultat de la sortie

Création de la table.....
Insertion des enregistrements.....
Enregistrement supprimé.....
Nombre de lignes affectées 2

Exemple en ligne

Si la requête n'affecte aucune ligne, vérifions son retour-

<?php
   $con = @mysqli_connect("localhost", "root", "password", "mydb");
   mysqli_query($con, "CREATE TABLE Test(Name VARCHAR(255), AGE INT");
   print("Création de la table.....\n");
   mysqli_query($con, "insert into Test values('Raju', 25),('Rahman', 30),('Sarmista', 27);
   print("Insertion des enregistrements.....\n");
   $stmt = mysqli_prepare($con, "DELETE FROM test WHERE Age<?");
   mysqli_stmt_bind_param($stmt, "i", $num);
   $num = 8;
   //Exécuter l'instruction
   mysqli_stmt_execute($stmt);
   //Nombre de lignes affectées
   $count = mysqli_stmt_affected_rows($stmt);
   print("Nombre de lignes affectées (lorsque la requête ne réalise aucune opération) : ".$count);
   //Fin de l'instruction
   mysqli_stmt_close($stmt);
   //Fermer la connexion
   mysqli_close($con);
?>

Résultat de la sortie

Création de la table.....
Insertion des enregistrements.....
Nombre de lignes affectées (lorsque la requête ne réalise aucune opération) : 0

PHP MySQLi Référence Manuel