Signatur
Beschreibung
ibase_affected_rows() ermittelt, wie viele Datensätze durch die zuletzt ausgeführte DML-Anweisung (INSERT, UPDATE, DELETE) tatsächlich verändert wurden. Dies ist besonders nützlich, um nach einem UPDATE oder DELETE zu prüfen, ob und wie viele Zeilen wirklich angepasst wurden, ohne eine separate COUNT-Abfrage ausführen zu müssen.
Die Funktion ist Teil der ibase_*-Erweiterung für Firebird- und InterBase-Datenbanken. Wird kein $link_identifier übergeben, wird die zuletzt geöffnete Verbindung verwendet. Der Rückgabewert bezieht sich stets auf die letzte ausgeführte Anweisung auf der angegebenen Verbindung.
Typische Anwendungsfälle sind die Validierung von Datenbankoperationen (z. B. prüfen, ob ein UPDATE tatsächlich einen Datensatz gefunden und verändert hat) sowie das Loggen von Massenoperationen, bei denen die Anzahl der geänderten Zeilen protokolliert werden soll.
Hinweis: Die ibase_*-Funktionen wurden in PHP 8.0 aus dem PHP-Core entfernt und stehen seitdem nur noch über die externe PECL-Erweiterung ibase bzw. firebird zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $link_identifier | resource | null | Eine Firebird/InterBase-Verbindungsressource, die mit ibase_connect() oder ibase_pconnect() erzeugt wurde. Wird dieser Parameter weggelassen, wird die zuletzt geöffnete Verbindung verwendet. |
Rückgabewert
0 zurückgegeben.Beispiele
Anzahl aktualisierter Zeilen nach einem UPDATE
<?php
$dbh = ibase_connect('localhost:/path/to/database.fdb', 'user', 'password');
$sql = "UPDATE produkte SET preis = preis * 1.10 WHERE kategorie = 'Elektronik'";
ibase_query($dbh, $sql);
$anzahl = ibase_affected_rows($dbh);
echo "Aktualisierte Zeilen: " . $anzahl;
ibase_close($dbh);
?>
Prüfen, ob ein DELETE-Befehl einen Datensatz gefunden hat
<?php
$dbh = ibase_connect('localhost:/path/to/database.fdb', 'user', 'password');
$id = 99;
$sql = "DELETE FROM bestellungen WHERE id = " . (int)$id;
ibase_query($dbh, $sql);
$betroffene = ibase_affected_rows($dbh);
if ($betroffene > 0) {
echo "Datensatz mit ID $id wurde erfolgreich gelöscht.";
} else {
echo "Kein Datensatz mit ID $id gefunden.";
}
ibase_close($dbh);
?>
// Wichtig · Fallstricke
Deprecation/Entfernung: Die gesamte ibase_*-Erweiterung wurde mit PHP 8.0 aus dem PHP-Core entfernt. Für PHP 8.x und neuer muss die Funktionalität über die PECL-Erweiterung ibase oder firebird nachinstalliert werden. Neue Projekte sollten PDO mit dem Firebird-Treiber (PDO_Firebird) verwenden.
Sicherheitshinweis: Werte, die in SQL-Abfragen verwendet werden, sollten niemals direkt aus Benutzereingaben übernommen werden. Da ibase_* keine Prepared Statements im modernen Sinne bietet, empfiehlt sich die explizite Typumwandlung (z. B. (int)$id) oder die Verwendung von ibase_execute() mit parametrisierten Abfragen.