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

PHP 基础教程

PHP 高级教程

PHP & MySQL

PHP 参考手册

PHP mysqli_stmt_affected_rows() 函数用法及示例

PHP MySQLi Referenzhandbuch

mysqli_stmt_affected_rows() 函数返回最后执行的语句更改,删除或插入的行总数.

定义和用法

mysqli_stmt_affected_rows()函数返回最近执行的语句影响(更改,删除,插入)的行数。

只有在INSERT,UPDATE或DELETE语句之后调用此函数,该函数才能正常工作。如果您需要了解受SELECT查询影响的行数,则需要使用 mysqli_stmt_num_rows() 函数。

语法

mysqli_stmt_affected_rows($stmt)

参数

序号参数及说明
1

stmt(必需)

这是表示执行SQL查询的语句的对象。

返回值

PHP mysqli_stmt_affected_rows() 函数返回一个整数值,该值指示受先前(INSERT,UPDATE,REPLACE或DELETE)操作影响的行数。

如果语句有错误,则此函数返回-1。如果没有受影响的行,则此函数返回0

PHP-Version

Diese Funktion wurde ursprünglich in der PHP-Version5eingeführt und kann in allen höheren Versionen verwendet werden.

Online-Beispiel

Angenommen, wir haben bereits eine als employee bezeichnete Tabelle in der MySQL-Datenbank erstellt, deren Inhalt wie folgt ist:

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 Zeilen in set (0.00 sec)

Ein Beispiel dazu ist:mysqli_stmt_affected_rows()Verwendung der Funktion (prozeduraler Stil), nach dem Ausführen von update die Anzahl der betroffenen Zeilen zurückgeben:

<?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;
   //Abfrage ausführen
   mysqli_stmt_execute($stmt);
   print("aktualisierte Aufzeichnungen......\n");
   //Betroffene Zeilen
   $count = mysqli_stmt_affected_rows($stmt);
   //Abfrage beenden
   mysqli_stmt_close($stmt);
   //Verbindung schließen
   mysqli_close($con);
   print("betroffene Zeilen " . $count);
?>

Ausgabe der Ergebnisse

aktualisierte Aufzeichnungen......
Betroffene Zeilen 3

Online-Beispiel

In der objektorientierten Stil ist die Syntax dieser Funktion:$con-> affected_rows;.Hier ist ein Beispiel für die objektorientierte Stil dieser Funktion, die nach dem Ausführen von delete die Anzahl der betroffenen Zeilen zurückgibt:

<?php
   //Verbindung herstellen
   $con = new mysqli("localhost", "root", "password", "mydb");
   $con -> query("CREATE TABLE Test(Name VARCHAR(255), AGE INT");
   print("Erstellen von Tabellen.....\n");
   $con -> query("insert into Test values('Raju', 25),('Rahman', 30),('Sarmista', 27);
   print("Einfügen von Einträgen.....\n");
   $stmt = $con -> prepare("DELETE FROM Test WHERE Name in(?, ?)");
   $stmt -> bind_param("ss", $name1, $name2);
   $name1 ='Raju';
   $name2 ='Rahman';
   print("Eintrag wurde gelöscht.....\n");
   //Abfrage ausführen
   $stmt->execute();
   //Betroffene Zeilen
   $count = $stmt ->affected_rows;
   print("Betroffene Zeilen ".$count);
   //Abfrage beenden
   $stmt->close();
   //Verbindung schließen
   $con->close();
?>

Ausgabe der Ergebnisse

Erstellen von Tabellen.....
Einfügen von Einträgen.....
Eintrag wurde gelöscht.....
Betroffene Zeilen 2

Online-Beispiel

Wenn die Abfrage keine Zeilen beeinflusst, überprüfen wir ihren Rückgabewert-

<?php
   $con = @mysqli_connect("localhost", "root", "password", "mydb");
   mysqli_query($con, "CREATE TABLE Test(Name VARCHAR(255), AGE INT");
   print("Erstellen von Tabellen.....\n");
   mysqli_query($con, "insert into Test values('Raju', 25),('Rahman', 30),('Sarmista', 27);
   print("Einfügen von Einträgen.....\n");
   $stmt = mysqli_prepare($con, "DELETE FROM test WHERE Age<?");
   mysqli_stmt_bind_param($stmt, "i", $num);
   $num = 8;
   //Abfrage ausführen
   mysqli_stmt_execute($stmt);
   //Betroffene Zeilen
   $count = mysqli_stmt_affected_rows($stmt);
   print("Betroffene Zeilen (wenn die Abfrage keine Aktion ausführt): ".$count);
   //Abfrage beenden
   mysqli_stmt_close($stmt);
   //Verbindung schließen
   mysqli_close($con);
?>

Ausgabe der Ergebnisse

Erstellen von Tabellen.....
Einfügen von Einträgen.....
Betroffene Zeilen (wenn die Abfrage keine Aktion ausführt): 0

PHP MySQLi Referenzhandbuch