de.comp.lang.php.* FAQ

18.6. Ich verwende das obige Beispiel. Wie kann ich nun mysql_insert_id() emulieren?

Antwort von Thomas Fromm

Der aktuellen Wert der Sequenz zaehler_der_tabelle_xy kann durch Verwendung von currval (abgeleitet von Current Value) ermittelt werden. Mit dem folgenden Codestück ist es möglich, den zuletzt eingefügten Wert abzufragen:

// INSERT in die Tabelle

$stmt = OCIParse($conn, "INSERT INTO xy (BLA_XY) VALUES 'BLA'");
OCIExecute($stmt, OCI_DEFAULT);

//Abfrage der Sequence
$stmt = OCIParse($conn,"SELECT zaehler_der_tabelle_xy.currval
                 AS CV FROM DUAL");
OCIExecute($stmt, OCI_DEFAULT);
OCIFetch($stmt);
$last_id=OCIResult($stmt, "CV");
OCICommit($conn);

Achtung: Das selektieren des currval funktioniert nur innerhalb derselben Transaktion (daher auch beim OCI_DEFAULT). Will man den aktuellen höchsten ID-Wert ermitteln, ist es besser, unter Verwendung der SQL-Funktion MAX() den höchsten Wert direkt aus der Tabelle abzufragen.

Valid HTML 4.01! Valid CSS!

18.6. Ich verwende das obige Beispiel. Wie kann ich nun mysql_insert_id() emulieren?
http://www.php-faq.de/q/q-oracle-insert-id.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team