Signatur
Beschreibung
cubrid_affected_rows() ermittelt, wie viele Zeilen durch das zuletzt ausgeführte schreibende SQL-Statement (INSERT, UPDATE oder DELETE) tatsächlich verändert wurden. Dies ist nützlich, um nach einem Datenbankeingriff sicherzustellen, ob und wie viele Datensätze wirklich betroffen waren.
Die Funktion kann entweder mit einer Verbindungsressource aufgerufen werden, die über cubrid_connect() oder cubrid_connect_with_url() erzeugt wurde, oder ohne Argument – dann wird die zuletzt geöffnete Verbindung verwendet. Bei SELECT-Statements ist der Rückgabewert nicht sinnvoll; verwende stattdessen cubrid_num_rows().
Typische Anwendungsfälle sind das Prüfen, ob ein UPDATE tatsächlich mindestens einen Datensatz verändert hat, oder das Bestätigen, dass ein DELETE-Statement die erwartete Anzahl an Zeilen entfernt hat. So lassen sich stille Fehler – z. B. ein UPDATE mit einer Bedingung, die auf keine Zeile zutrifft – frühzeitig erkennen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $conn_identifier | resource | null | Die CUBRID-Verbindungsressource, die von cubrid_connect() oder cubrid_connect_with_url() zurückgegeben wurde. Wird kein Argument übergeben, wird die zuletzt geöffnete aktive Verbindung verwendet. |
Rückgabewert
0 zurückgegeben. Im Fehlerfall (z. B. ungültige Verbindungsressource) wird -1 zurückgegeben.Beispiele
Anzahl geänderter Zeilen nach einem UPDATE prüfen
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
$sql = "UPDATE employees SET salary = salary * 1.05 WHERE department = 'Engineering'";
$result = cubrid_execute($conn, $sql);
if ($result) {
$affected = cubrid_affected_rows($conn);
echo "Betroffene Zeilen: " . $affected . PHP_EOL;
if ($affected === 0) {
echo "Warnung: Kein Datensatz wurde aktualisiert – Bedingung prüfen!" . PHP_EOL;
}
} else {
echo "Fehler: " . cubrid_error($conn) . PHP_EOL;
}
cubrid_disconnect($conn);
Löschen von Datensätzen mit Rückgabewert-Kontrolle
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
$userId = 42;
$sql = "DELETE FROM sessions WHERE user_id = " . (int)$userId;
$result = cubrid_execute($conn, $sql);
if ($result) {
$deleted = cubrid_affected_rows($conn);
if ($deleted > 0) {
echo "Erfolgreich {$deleted} Session(s) für Benutzer {$userId} gelöscht." . PHP_EOL;
} else {
echo "Keine Sessions für Benutzer {$userId} gefunden." . PHP_EOL;
}
} else {
echo "Fehler beim Löschen: " . cubrid_error($conn) . PHP_EOL;
}
cubrid_disconnect($conn);
// Wichtig · Fallstricke
Nur für schreibende Statements: cubrid_affected_rows() liefert für SELECT-Abfragen keinen aussagekräftigen Wert. Für die Zeilenanzahl eines SELECT-Ergebnisses sollte cubrid_num_rows() verwendet werden.
Rückgabewert -1: Ein Rückgabewert von -1 deutet auf einen Fehler hin – etwa eine ungültige oder bereits geschlossene Verbindung. Dieser Fall sollte im Code explizit behandelt werden.
Transaktionen: Bei CUBRID-Datenbanken mit aktivierten Transaktionen spiegelt cubrid_affected_rows() die Anzahl der innerhalb der laufenden Transaktion betroffenen Zeilen wider. Erst nach einem cubrid_commit() sind die Änderungen dauerhaft gespeichert.