English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
mysqli_stmt_affected_rows($stmt)
Numéro | Paramètres et explications |
---|---|
1 | stmt(obligatoire) C'est l'objet de l'instruction exécutant la requête SQL. |
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。
Cette fonction a été initialement créée dans la version PHP5中引入的,并且可以在所有更高版本中使用。
假设我们已经在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
在面向对象风格中,此函数的语法为$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
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