Start · Sprachen · PHP · Referenz · cubrid_affected_rows

cubrid_affected_rows

Funktion

Gibt die Anzahl der durch das zuletzt ausgeführte INSERT-, UPDATE- oder DELETE-Statement betroffenen Datenbankzeilen zurück.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_affected_rows(resource $conn_identifier = null): int

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

Typ
int
Beschreibung
Gibt die Anzahl der betroffenen Zeilen als positive Ganzzahl zurück. Wurde keine Zeile verändert, wird 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);
Betroffene Zeilen: 12

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);
Erfolgreich 3 Session(s) für Benutzer 42 gelöscht.

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