33 Stimmen

MySQL: Wie viele Datensätze wurden gefunden oder sind von meiner Abfrage betroffen?

Info von Stefan Trost | Letztes Update am 18.01.2023 | Erstellt am 29.05.2012

Manchmal möchte man in PHP wissen, wie viele Datensätze bei einer MySQL-Suche mit SELECT insgesamt gefunden wurden oder wie viele Zeilen von einem UPDATE oder DELETE betroffen waren. Beide Kennwerte kann man einfach durch eine PHP-MySQL-Funktion erfragen. In diesem Artikel zeigen wir euch, wie das geht.

Wie viele Datensätze wurden gefunden?

Wir haben eine beliebige SELECT-Anfrage und uns interessiert, wie viele Datensätze gefunden wurden ohne gleich alle Zeilen des Ergebnisses händisch durchzugehen:

$anfrage = "SELECT name FROM tabelle WHERE plz = 46242";
$erg = mysqli_query($db, $anfrage);

$c = mysqli_num_rows($erg);
echo "$c Personen wurden gefunden.";

Die Funktion mysqli_num_rows() liefert uns die Anzahl der Datensätze, die in einem durch mysqli_query() erzeugten Result Set enthalten sind. Interessant ist diese Information zum Beispiel, um die Anzahl der Treffer einer Suche anzuzeigen oder zu entscheiden ob noch eine weitere Seite mit Suchergebnissen vonnöten ist.

Wie viele Datensätze sind betroffen?

Nach einem UPDATE- oder einem DELETE-Befehl interessiert uns, wie viele Datensätze eigentlich von der Anfrage betroffen waren und geändert beziehungsweise gelöscht wurden.

Schauen wir uns zunächst ein kleines Beispiel für einen UPDATE-Befehl:

$anfrage = "UPDATE tabelle SET stadt = 'Bottrop' WHERE plz = 46242";
$erg = mysqli_query($db, $anfrage);

$c = mysqli_affected_rows($erg);
echo "$c Datensätze wurden geändert.";

Und hier ist ein weiteres Beispiel, das uns die Anzahl an gelöschten Datensätzen nach einem DELETE-Befehl ausgibt:

$anfrage = "DELETE FROM tabelle WHERE plz = 46119";
$erg = mysqli_query($db, $anfrage);

$c = mysqli_affected_rows($erg);
echo "$c Datensätze wurden gelöscht.";

Die Funktion mysqli_affected_rows() gibt uns die Anzahl der geänderten Datensätze zurück, die bei der letzten MySQL-Anfrage betroffen waren. Falls es in dieser Anfrage zu einem Fehler kam, ist der Return-Wert -1. Interessant ist diese Information zum Beispiel, um zu Überprüfen, ob überhaupt Datensätze nach einem UPDATE geändert wurden oder um zu ermitteln, wie viele Datensätze ein DELETE aus unserer Datenbank entfernt hat.

Übrigens funktioniert die Funktion mysqli_affected_rows() nicht nur nach einem UPDATE oder nach einem DELETE: Mit dieser Funktion können wir die Anzahl der betroffenen Datensätze auch für jeden beliebigen anderen MySQL-Befehl wie zum Beispiel für INSERT oder SELECT ermitteln.

AntwortenPositivNegativ

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.