Signatur
Beschreibung
fbird_affected_rows() ist ein Alias der Funktion ibase_affected_rows() und gehört zur Firebird/InterBase-Erweiterung von PHP. Die Funktion gibt zurück, wie viele Datensätze durch die zuletzt ausgeführte schreibende Abfrage (INSERT, UPDATE oder DELETE) tatsächlich verändert wurden.
Sie ist besonders nützlich, wenn Sie nach einer Massenaktualisierung oder einem Bulk-Delete überprüfen möchten, ob die Abfrage wie erwartet gewirkt hat – zum Beispiel um sicherzustellen, dass tatsächlich Datensätze gelöscht wurden, bevor eine Erfolgsmeldung ausgegeben wird.
Wird kein $link_identifier übergeben, verwendet PHP die zuletzt geöffnete Datenbankverbindung. Bei Verwendung von Transaktionen kann optional auch eine Transaktions-Ressource übergeben werden.
Hinweis: Diese Funktion funktioniert ausschließlich mit DML-Anweisungen (INSERT, UPDATE, DELETE). Für SELECT-Abfragen ist stattdessen ibase_num_rows() zu verwenden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $link_identifier | resource | null | Eine Firebird/InterBase-Verbindungsressource, die mit ibase_connect() oder ibase_pconnect() erzeugt wurde. Alternativ kann eine Transaktions-Ressource übergeben werden. Wird der Parameter weggelassen, wird die zuletzt geöffnete Verbindung verwendet. |
Rückgabewert
INSERT, UPDATE, DELETE) auf der angegebenen Verbindung betroffen waren. Gibt 0 zurück, wenn keine Zeilen betroffen waren oder wenn zuletzt keine DML-Abfrage ausgeführt wurde.Beispiele
Anzahl der gelöschten Zeilen prüfen
<?php
$dbh = ibase_connect('localhost:database.fdb', 'SYSDBA', 'masterkey');
$sql = "DELETE FROM bestellungen WHERE status = 'storniert'";
ibase_query($dbh, $sql);
$anzahl = fbird_affected_rows($dbh);
if ($anzahl > 0) {
echo "Es wurden {$anzahl} stornierte Bestellung(en) gelöscht.";
} else {
echo "Keine Bestellungen zum Löschen gefunden.";
}
ibase_close($dbh);
?>
Betroffene Zeilen nach einem UPDATE ermitteln
<?php
$dbh = ibase_connect('localhost:database.fdb', 'SYSDBA', 'masterkey');
$neuerPreis = 19.99;
$kategorie = 'Sonderangebot';
$abfrage = ibase_prepare($dbh, "UPDATE artikel SET preis = ? WHERE kategorie = ?");
ibase_execute($abfrage, $neuerPreis, $kategorie);
$betroffene = fbird_affected_rows($dbh);
echo "Preis wurde bei {$betroffene} Artikel(n) aktualisiert.";
ibase_close($dbh);
?>
// Wichtig · Fallstricke
Deprecation-Hinweis: Die fbird_*-Funktionen sind Aliase der ibase_*-Funktionen. Ab PHP 8.0 wurde die InterBase-Erweiterung aus dem PHP-Kern entfernt. Sie steht nur noch über PECL als separates Paket zur Verfügung. Für neue Projekte empfiehlt sich die Nutzung einer alternativen Datenbankabstraktion oder eines aktuellen Treibers.
Die Funktion liefert nur sinnvolle Werte für die zuletzt ausgeführte Abfrage auf der jeweiligen Verbindung. Bei parallelen oder verschachtelten Abfragen auf derselben Verbindung kann das Ergebnis unerwartet sein – hier sollte die Verbindungsressource explizit übergeben werden.