(PHP 4, PHP 5)
mysql_affected_rows — Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation
mysql_affected_rows() liefert die Anzahl betroffener Datensätze durch die letzte INSERT, UPDATE oder DELETE Anfrage an den Server, die mit der angegebenen Verbindungs-Kennung assoziiert wird. Wird die Verbindungskennung nicht angegeben, wird die letzte durch mysql_connect() geöffnete Verbindung angenommen.
Hinweis: Falls Sie Transaktionen verwenden, müssen Sie mysql_affected_rows() unmittelbar nach Ihrer INSERT, UPDATE, oder DELETE Anfrage aufrufen, nicht nach dem Commit.
War die letzte Anfrage ein DELETE-Anweisung ohne WHERE Bedingung, wurden alle Datensätze aus der Tabelle gelöscht. Für MySQL Versionen vor 4.1.2 wird diese Funktion hier aber Null (0) zurückliefern.
Hinweis: Benutzen Sie UPDATE wird MySQL keine Spalten aktualisieren, bei denen der neue dem alten Wert entpspricht. Das kann dazu führen, dass mysql_affected_rows() nicht die tatsächliche Anzahl der betroffenen Zeilen liefert, sondern nur die, die wörtlich durch die Anfrage betroffen sind.
REPLACE Anfragen löschen zunächst den Eintrag mit dem gleichen Primärschlüssel und fügen dann den neuen Eintrag ein. Diese Funktion gibt in diesem Fall die Summe aus gelöschten und eingefügten Einträgen zurück.
Um die Anzahl der gelieferten Datensätze einer SELECT-Anfrage zu erhalten benutzen Sie stattdessen die Funktion mysql_num_rows().
Falls die letze Anfrage fehlschlägt, liefert diese Funktion -1 zurück.
Beispiel #1 Delete-Query
<?php
/* Verbindung zur Datenabank */
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Keine Verbindung möglich: ' . mysql_error());
}
mysql_select_db('mydb');
/* Das sollte die korrekte Anzahl gelöschter Datensätze liefern */
mysql_query("DELETE FROM mytable WHERE id < 10");
printf ("Datensätze gelöscht: %d\n", mysql_affected_rows());
// Mit einer where Bedingung, die niemals wahr sein kann,
// sollte 0 zurückgegben werden
mysql_query('DELETE FROM mytable WHERE 0');
printf ("Datensätze gelöscht: %d\n", mysql_affected_rows());
?>
Das obige Beispiel gibt folgendes aus:
Datensätze gelöscht: 10 Datensätze gelöscht: 0
Beispiel #2 Update-Query
<?php
/* Verbindung zur Datenabank */
mysql_pconnect("localhost", "mysql_user", "mysql_password")
or die ("Keine Verbindung möglich: " : . mysql_error());
mysql_select_db("mydb");
/* Update von Datensätzen */
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf ("Veränderte Datensätze: %d\n", mysql_affected_rows());
mysql_query("COMMIT");
?>
Das obige Beispiel gibt folgendes aus:
Veränderte Datensätze: 10
Siehe auch: mysql_num_rows(), mysql_info().