(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDOStatement::rowCount — Liefert die Anzahl der von der letzten SQL-Anweisung betroffenen Zeilen
PDOStatement::rowCount() gibt die Anzahl der Zeilen
zurück, die von der letzten DELETE-, INSERT- oder UPDATE-Anweisung des
zugehörigen PDOStatement
-Objekts betroffen waren.
Bei Anweisungen, die Ergebnismengen erzeugen, z. B.
SELECT
, ist das Verhalten nicht definiert und kann je
nach Treiber unterschiedlich sein. Einige Datenbanken können die Anzahl der
von dieser Anweisung erzeugten Zeilen zurückgeben (z. B. MySQL im
gepufferten Modus), aber dieses Verhalten ist nicht für alle Datenbanken
garantiert und sollte nicht für portable Anwendungen verwendet werden.
Hinweis:
Diese Methode gibt beim SQLite-Treiber immer "0" (Null) zurück, beim PostgreSQL-Treiber nur dann, wenn das Statement-Attribut
PDO::ATTR_CURSOR
aufPDO::CURSOR_SCROLL
gesetzt ist.
Diese Funktion besitzt keine Parameter.
Gibt die Anzahl der Zeilen zurück.
Gibt einen Fehler der Stufe E_WARNING
aus, wenn das Attribut PDO::ATTR_ERRMODE
auf PDO::ERRMODE_WARNING
gesetzt ist.
Löst eine PDOException aus, wenn das Attribut PDO::ATTR_ERRMODE
auf PDO::ERRMODE_EXCEPTION
gesetzt ist.
Beispiel #1 Ermitteln der Anzahl der gelöschten Zeilen
PDOStatement::rowCount() gibt die Anzahl der Zeilen zurück, die von einer DELETE-, INSERT- oder UPDATE-Anweisung betroffen sind.
<?php
/* Löschen aller Zeilen aus der Tabelle FRUIT */
$del = $dbh->prepare('DELETE FROM fruit');
$del->execute();
/* Rückgabe der Anzahl der gelöschten Zeilen */
print "Rückgabe der Anzahl der gelöschten Zeilen:\n";
$count = $del->rowCount();
print "Es wurden $count Zeilen gelöscht.\n";
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Rückgabe der Anzahl der gelöschten Zeilen: Es wurden 9 Zeilen gelöscht.
Beispiel #2 Zählen der Zeilen, die von einer SELECT-Anweisung zurückgegeben wurden
Bei den meisten Datenbanken gibt PDOStatement::rowCount() die Anzahl der von einer SELECT-Anweisung betroffenen Zeilen nicht zurück. Stattdessen sollte mittels PDO::query() eine SELECT COUNT(*)-Anweisung ausgeführt werden, die dieselben Bedingungen erfüllt wie die gewünschte SELECT-Anweisung. Mit PDOStatement::fetchColumn() kann dann die Anzahl der betroffenen Zeilen ermittelt werden.
<?php
$sql = "SELECT COUNT(*) FROM fruit WHERE calories > 100";
$res = $conn->query($sql);
$count = $res->fetchColumn();
print "Es gibt " . $count . " übereinstimmende Datensätze.";
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Es gibt 2 übereinstimmende Datensätze.