Id von eingefügtem Datensatz herausfinden

X-SIX

Grünschnabel
Hallo Leute,

wahrscheinlich ist es einfach, aber ich komme nicht auf eine brauchbare Lösung :confused:

Ich habe das Problem, dass ich einen Datensatz einer Tabelle auslese, 2 Parameter ändere und anschließend wieder als neuen Datensatz einfüge.

Derzeit löse ich das so, dass ich den Datensatz auslese in ein Array schreibe, dann die Parameter ändere und anschließend wieder als neuen Datensatz einfüge.

Ist das wirklich der gängige - weil aus meiner Sicht umständliche - weg?

Ich habe nun daran gedacht, den Datensatz mit

PHP:
INSERT INTO tabellenname SELECT * FROM tabellenname WHERE id = 'id'

Diese Zeile kopiert mir aber den gesamten Datensatz als neuen Eintrag.

Nun müsste ich noch ein Update hinterherschieben um die 2 Parameter zu ändern.
Dazu brauche ich natürlich die ID des eben gerade eingefügten Datensatzes.

Gibt es da ne Anweisung, die mir nach dem INSERT die neue ID ausgibt?

Vielen Dank für Eure Hilfe....

Gruß an Alle!
 
Das klappt bei mir:

PHP:
INSERT INTO tabellenname SELECT feld1, feld2, 'neuer wert', feld4, neue_zahl, feld6 FROM tabellenname WHERE id = 'id'

Einfach in der SELECT Anweisung alle Felder der Tabelle aufführen und da wo ein Wert geändert werden soll anstelle des Feldnamens den entsprechenden Wert einsetzten.

Oder aber du liest dir das hier mal durch:
http://php.net/manual/de/function.mysql-insert-id.php
 
Zuletzt bearbeitet:
Hi tombe,

vielen Dank für die Antwort. Diese Möglichkeit kenne ich und die ist je im Prinzip ähnlich wie mein SELECT und INSERT...

Leider sind es aber 146 Spalten :eek: und ich wollte mit der Gesamtkopie und einem anschließenden UPDATE der 2 Werte einfach Quelltext sparen..... :)

Gruß X-SIX
 
Klar ist das so gewollt :)
(Kopiere damit einen Buchungsdatensatz - aus einer stornierten Buchung wird eine "bearbeitbare" Kopie wobei die stornierte Buchung beibehalten bleibt)

Sonst bräuchte ich ja nur ein Update zu machen :D

Danke der Nachfrage. Der oben stehende Link hat mir weiter geholfen.
 
Guckst du oben bei meiner ersten Antwort. Da ist genau der Link angegeben den du jetzt auch geschrieben hast !!

Thema scheint ja auch erledigt zu sein:

Danke der Nachfrage. Der oben stehende Link hat mir weiter geholfen.


Gruß Thomas
 
Zurück