"We are back" « oc.at

MySQL Abfragen einer gerade erstellten Zeile

jb 21.08.2006 - 15:29 820 4
Posts

jb

Here to stay
Registered: May 2000
Location: /home/noe/
Posts: 3523
Habe folgendes Problem zu lösen:

Es wird eine neue Zeile in eine Tabelle geschrieben, der Index wird dabei automatisch erstellt (also nicht von mir eingefügt). Nun möchte ich den Index aber haben, weil ich ihn zur Weiterverarbeitung brauche. Konkret geht es um ein kleines Content-Management System, hier wird der Inhalt eingefügt und ich brauche die Spalte "id", um sie für die Verlinkung in einem Menü in der dortigen Tabelle einzufügen
Zitat
INSERT INTO inhalt (titel, text, view, pics, datum) VALUES ('$titel', '$text', '$view', '$pics', '$datum')

Die Spalte, deren Wert ich brauche heißt id (die auch als Primärindex verwendet wird und Unique ist).
Wie kann ich das elegant lösen, ohne eine Abfrage machen zu müssen, die alle Felder nach der gerade eingefügten Zeile absucht?
Die Wahrscheinlichkeit, 2 genau gleiche Zeilen in der Tabelle zu haben ist zwar fast 0, nur theoretisch wäre es möglich. Genau diesen Fall möchte ich ausschließen.

Eine Idee von mir wäre es, den höchsten Wert des Feldes "id" auszulesen und dann die Zeile mit einem um 1 höheren Wert in die Tabelle zu schreiben, aber das ist mir auch nicht elegant genug, das muß irgendwie anders (einfacher und/oder besser gehen.
Bearbeitet von jb am 21.08.2006, 18:24

Spikx

My Little Pwny
Avatar
Registered: Jan 2002
Location: Scotland
Posts: 13496
Code:
SELECT LAST_INSERT_ID();

Facetious

Addicted
Avatar
Registered: Oct 2003
Location: Wien
Posts: 406
oder wenn du das ganze mit php realisierst: http://at.php.net/manual/de/functio...l-insert-id.php

mfg

jb

Here to stay
Registered: May 2000
Location: /home/noe/
Posts: 3523
Hmm habs mal versucht, aber dürfte irgendwie nicht hinhauen. In der MySQL Referenz hab ich ein Beispiel gefunden, daß mich aber auch nicht schlauer gemacht hat. Wie bring ich das nun mit PHP raus, ich weiß es muß anfängermäßig klingen aber ich steh momentan komplett auf der Leitung.
Vielleicht entdeckt jemand hier drin einen Fehler (habs auch schon ohne () versucht).
Zitat
$result=mysql_query ("select last_insert_id()", $db);
Muß ich vielleicht nachher noch wie bei jeder anderen Abfrage einen Wert aus dem Result holen (das ja normalerweise nur so ne Result-ID oder was in der Art ist)?

jb

Here to stay
Registered: May 2000
Location: /home/noe/
Posts: 3523
Zitat von Facetious
oder wenn du das ganze mit php realisierst: http://at.php.net/manual/de/functio...l-insert-id.php

mfg

Hehe, das wars, funktioniert.
Hab mal wieder zu kompliziert gedacht, danke für den Denkanstoß!
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz