Signatur
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
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);
?>
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);
?>
// 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.