Start · Sprachen · PHP · Referenz · cubrid_insert_id

cubrid_insert_id

Funktion

Gibt die zuletzt durch einen <code>INSERT</code>-Befehl generierte <code>AUTO_INCREMENT</code>-ID der aktuellen Verbindung zurück.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_insert_id(resource $conn_identifier = null): string|false

Beschreibung

cubrid_insert_id() liefert den Wert, der zuletzt für eine AUTO_INCREMENT-Spalte erzeugt wurde. Die Funktion ist dem MySQL-Äquivalent mysql_insert_id() nachempfunden und dient dazu, nach einem erfolgreichen INSERT in eine Tabelle mit automatisch inkrementierter Primärschlüsselspalte die vergebene ID abzufragen.

Wird kein $conn_identifier übergeben, verwendet die Funktion die zuletzt geöffnete CUBRID-Verbindung. Hat kein vorheriger INSERT eine Auto-Increment-Spalte befüllt, oder ist kein gültiger Eintrag vorhanden, wird "0" zurückgegeben.

Der Rückgabewert ist ein string, da CUBRID-Spalten vom Typ BIGINT sein können und PHP-Integer-Grenzen überschreiten würden. Bei einem Fehler wird false zurückgegeben.

Diese Funktion ist besonders nützlich, wenn nach dem Einfügen eines Datensatzes die vergebene ID für weitere Operationen (z. B. Verknüpfungen in anderen Tabellen) benötigt wird.

Parameter

Name Typ Default Beschreibung
$conn_identifier resource null Das CUBRID-Verbindungs-Handle, das von cubrid_connect() oder cubrid_connect_with_url() zurückgegeben wurde. Wird dieser Parameter weggelassen, wird die zuletzt geöffnete Verbindung verwendet.

Rückgabewert

Typ
string|false
Beschreibung
Gibt die zuletzt generierte AUTO_INCREMENT-ID als string zurück, um auch sehr große BIGINT-Werte korrekt darzustellen. Wurde kein INSERT mit Auto-Increment durchgeführt, wird "0" zurückgegeben. Bei einem Fehler wird false zurückgegeben.

Beispiele

Zuletzt eingefügte ID nach INSERT abfragen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'root', '');

if (!$conn) {
    die('Verbindung fehlgeschlagen: ' . cubrid_error());
}

$sql = "INSERT INTO users (username, email) VALUES ('max_mustermann', 'max@example.com')";
$result = cubrid_execute($conn, $sql);

if ($result) {
    $last_id = cubrid_insert_id($conn);
    echo 'Neuer Datensatz mit ID: ' . $last_id . PHP_EOL;
} else {
    echo 'Fehler beim Einfügen: ' . cubrid_error($conn);
}

cubrid_disconnect($conn);
?>
Neuer Datensatz mit ID: 42

INSERT mit anschließender Verknüpfung in zweiter Tabelle

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'root', '');

if (!$conn) {
    die('Verbindung fehlgeschlagen');
}

// Benutzer einfügen
$sql_user = "INSERT INTO users (username) VALUES ('erika_musterfrau')";
cubrid_execute($conn, $sql_user);
$user_id = cubrid_insert_id($conn);

if ($user_id && $user_id !== '0') {
    // Profil für diesen Benutzer anlegen
    $sql_profile = "INSERT INTO profiles (user_id, bio) VALUES ($user_id, 'Kurzbeschreibung')";
    $profile_result = cubrid_execute($conn, $sql_profile);

    if ($profile_result) {
        $profile_id = cubrid_insert_id($conn);
        echo "Benutzer-ID: $user_id, Profil-ID: $profile_id" . PHP_EOL;
    }
}

cubrid_disconnect($conn);
?>
Benutzer-ID: 15, Profil-ID: 8

// Wichtig · Fallstricke

Wichtig: Der Rückgabewert ist immer ein string, auch wenn die ID wie eine Ganzzahl aussieht. Bei Vergleichen oder Verwendung in weiteren SQL-Statements sollte die ID entsprechend behandelt werden.

Keine Transaktionssicherheit: In Umgebungen mit mehreren gleichzeitigen Verbindungen bezieht sich cubrid_insert_id() stets auf die letzte ID der aktuellen Verbindung, nicht global — das Verhalten ist daher bei korrekter Nutzung konkurrenzsicher.

Rückgabe "0": Wurde auf der aktuellen Verbindung noch kein INSERT mit Auto-Increment ausgeführt, gibt die Funktion den String "0" zurück. Eine Prüfung mit striktem Vergleich (=== '0') ist empfehlenswert.