Function.mysql-affected-rows
Aus PHP-Wiki
mysql_affected_rows — Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation
Beschreibung
int mysql_affected_rows ([ resource $ Verbindungs-Kennung ] )
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().