Signatur
Beschreibung
db2_num_rows() ermittelt nach der Ausführung einer DML-Anweisung (INSERT, UPDATE, DELETE), wie viele Tabellenzeilen davon betroffen waren. Die Funktion ist besonders nützlich, wenn geprüft werden soll, ob eine Änderungsoperation tatsächlich Datensätze verändert hat – etwa um leere Update-Operationen zu erkennen.
Für SELECT-Anweisungen liefert die Funktion kein zuverlässiges Ergebnis, da IBM Db2 und viele andere DBMS die Gesamtzahl der Ergebniszeilen eines Cursors erst nach vollständigem Durchlaufen kennen. In solchen Fällen sollte stattdessen db2_fetch_array() mit einem Zähler oder eine COUNT(*)-Abfrage verwendet werden.
Die Funktion erwartet ein gültiges Statement-Handle, das zuvor mit db2_exec() oder durch db2_execute() ausgeführt wurde. Bei einem Fehler oder einem ungültigen Handle gibt sie false zurück.
- Geeignet für: INSERT, UPDATE, DELETE
- Nicht zuverlässig für: SELECT-Anweisungen
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $stmt Pflicht | resource | Ein gültiges Statement-Handle, das von db2_exec() oder nach db2_execute() zurückgegeben wurde. |
Rückgabewert
int zurück. Bei einem Fehler oder einem ungültigen Statement-Handle wird false zurückgegeben.Beispiele
Anzahl aktualisierter Zeilen ermitteln
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheimespasswort');
if ($conn) {
$sql = "UPDATE mitarbeiter SET gehalt = gehalt * 1.05 WHERE abteilung = 'IT'";
$stmt = db2_exec($conn, $sql);
if ($stmt) {
$betroffene = db2_num_rows($stmt);
echo "Betroffene Zeilen: " . $betroffene;
} else {
echo "Fehler beim Ausführen: " . db2_stmt_errormsg();
}
db2_close($conn);
}
Prüfen ob ein DELETE tatsächlich Datensätze entfernt hat
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheimespasswort');
if ($conn) {
$stmt = db2_prepare($conn, 'DELETE FROM bestellungen WHERE kunde_id = ?');
if ($stmt && db2_execute($stmt, [42])) {
$geloescht = db2_num_rows($stmt);
if ($geloescht > 0) {
echo "Es wurden {$geloescht} Bestellung(en) gelöscht.";
} else {
echo "Keine Bestellungen für diesen Kunden gefunden.";
}
} else {
echo "Fehler: " . db2_stmt_errormsg();
}
db2_close($conn);
}
// Wichtig · Fallstricke
Achtung bei SELECT-Anweisungen: db2_num_rows() liefert für SELECT-Abfragen keinen zuverlässigen Wert. Je nach Cursor-Typ und DBMS-Konfiguration kann -1 oder ein falscher Wert zurückgegeben werden. Für die Zeilenzählung bei SELECT-Ergebnissen empfiehlt sich eine separate COUNT(*)-Abfrage.
Die Funktion ist Teil der IBM DB2-, Cloudscape- und Apache Derby-Erweiterung (ibm_db2) und steht nur zur Verfügung, wenn diese Erweiterung installiert und aktiviert ist.