[MySQL] ID des bearbeiteten Datensatzes rausfinden

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/mysql_id_des_bearbeiteten_datensatzes_rausfinden_150512/page_1 - zur Vollversion wechseln!


tomstig schrieb am 05.10.2005 um 23:11

Gibt es eine Möglichkeit, nach einem UPDATE die ID des Datensatzes rauszufinden, der bearbeitet wurde? Wenn ich z.B. eine Tabelle habe, mit dem id-Feld "user_id" und ich einfach mache:

Code: PHP
UPDATE users SET user_rights = 1
dann hab ich ja keine Ahnung, welche user_id gerade bearbeitet wurde.
Bei INSERT hab ich das bisher immer so gelöst:
Code: PHP
SELECT * FROM blabla ORDER BY id DESC LIMIT 1
Aber es kann ja sein, dass nach dem gerade bearbeiteten Datensatz eine anderer Datensatz steht.

Ich hab schon die Überlegung gehabt, dass ich der Tabelle ein timestamp-Feld hinzufüge, beim UPDATEN die timestamp aktualisiere und das ganze dann über diese abrufe... aber irgendwie wär das ein wenig umständlich... sonstige lösungsvorschläge?


that schrieb am 05.10.2005 um 23:14

Zitat von tomstig
Wenn ich z.B. eine Tabelle habe, mit dem id-Feld "user_id" und ich einfach mache:
Code: PHP
UPDATE users SET user_rights = 1
dann hab ich ja keine Ahnung, welche user_id gerade bearbeitet wurde.

doch ... alle.


Crash Override schrieb am 05.10.2005 um 23:14

Wie machst du denn das Update auf die Tabelle ohne den Schlüssel zu kennen?


dio schrieb am 05.10.2005 um 23:26

Was genau hast du vor?

Vl. hilft dir das: http://de.php.net/manual/de/function.mysql-info.php


tomstig schrieb am 05.10.2005 um 23:32

Zitat von that
doch ... alle.

jo, sry, hab das WHERE vergessen...

Bin grad draufkommen, dass es auch nicht so gehen würde, wie ichs mir gedacht habe und schreib grad das ganze um...

Wenn man keine Arbeit hat, dann macht man sich halt eine...


kleinerChemiker schrieb am 06.10.2005 um 11:33

und wenn du ein where hast, kannst du ja einfach ein select mit dem selben where machen und hast die id.


watchout schrieb am 06.10.2005 um 11:42

nicht ganz...

wenn du nämlich genau die spalte änderst die du im where abfragst, dann hast irgendwie ein Problem ;)


kleinerChemiker schrieb am 06.10.2005 um 13:31

nicht wenn ich das select vorher mache ;) hab ja nicht geschrieben, wann er es macht *g*
wobei dann ist eben die frage, will er die neue oder die alte id.


jives schrieb am 06.10.2005 um 17:38

Bei einem UPDATE ändert sich die id (afaik(!)) sowieso nicht, d.h. es gibt keine "alte" oder "neue" id.


Römi schrieb am 06.10.2005 um 17:41

da gibts einen befehl afaik,
http://de.php.net/manual/de/functio...l-insert-id.php


rettich schrieb am 06.10.2005 um 17:43

Zitat von Römi
da gibts einen befehl afaik,
http://de.php.net/manual/de/functio...l-insert-id.php

hm? die funktion liefert aber nur einen wert zurück, wenn du eine zeile insertest. beim update kommt nix.


kleinerChemiker schrieb am 06.10.2005 um 17:48

Zitat von jives
Bei einem UPDATE ändert sich die id (afaik(!)) sowieso nicht, d.h. es gibt keine "alte" oder "neue" id.

normalerweise nicht. ich kann aber auch die id ändern, wenn ichs will.


Römi schrieb am 06.10.2005 um 17:55

Zitat von kleinerChemiker
normalerweise nicht. ich kann aber auch die id ändern, wenn ichs will.

Aber dann weißt du ja eh welche id die neue ist


tomstig schrieb am 06.10.2005 um 19:16

Wofür ich das gebraucht hätte, war folgendes:
Da ich bei einer Änderung relativ viele Daten updaten muss, hab ich einfach die alten gelöscht und einfach die geänderten Daten eingefügt (sprich, die Einträge haben eine neue ID bekommen). In einem anderen Table hab ich aber genau diese IDs gespeichert. Wenn ich nun die Daten geändert habe, dann ist die Verbindung von dem einen Table zu dem anderen verloren gegangen (logisch: wenn ich die alten Einträge lösche und stattdessen ganz neue einfüge). Jetzt hatte ich die Idee, dass von dem table, von dem aus auf den anderen verlinkt wird, einfach die IDs aktualisiere. Und dafür hätte ich einen Befehl gebraucht, der mir die ID gibt, von dem Eintrag der mit UPDATE bearbeitet wird.

Weil wenn ich z.B. folgendes mache

Code: PHP
UPDATE table SET user_rights = 1 WHERE user_rights = 0
dann weiß ich ja nicht, welche ID gerade bearbeitet wird...

Aber ich habs so gelöst, dass bei einer Änderung einfach die Einträge gezielt geändert werden und nicht einfach gelöscht und neu eingetragen werden...


kleinerChemiker schrieb am 06.10.2005 um 19:55

oder du machst einfach ein SELECT id FROM table WHERE user_rights = 0 vorher, dann hast du auch die id's.

@römi: ist im grunde ja eh nur ne theoretische betrachtung. und um dem die krone aufzusetzen, ich weiß es nicht, wenn ich LAST_INSERT_ID()+1 oder gar RAND() verwende *ggg* aber das geht dann schon bischen gar weit ;)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025