Start · Sprachen · PHP · Referenz · fbird_affected_rows

fbird_affected_rows

Funktion

Gibt die Anzahl der Zeilen zurück, die von der letzten <code>INSERT</code>-, <code>UPDATE</code>- oder <code>DELETE</code>-Abfrage auf einer Firebird/InterBase-Datenbankverbindung betroffen waren.

seit PHP 5.0.0 Kategorie: db

Signatur

fbird_affected_rows(resource $link_identifier = null): int

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

Typ
int
Beschreibung
Gibt die Anzahl der Zeilen zurück, die von der letzten DML-Abfrage (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);
?>
Es wurden 3 stornierte Bestellung(en) gelöscht.

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);
?>
Preis wurde bei 7 Artikel(n) aktualisiert.

// 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.