Forum und email

mysql_affected_rows

(PHP 4, PHP 5, PECL mysql:1.0)

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. Diese Funktion wird aber trotzdem 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.

Diese Funktion arbeitet nicht in Verbindung mit SELECT-Anfragen, sondern nur bei Anweisungen, die Datensätze verändern. Um die Anzahl der gelieferten Datensätze einer SELECT-Anfrage zu erhalten, benutzen Sie die Funktion mysql_num_rows().

Falls die letze Anfrage fehlschlägt, liefert diese Funktion -1 zurück.

Example#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

Example#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().