| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: ID von neuem Datensatz im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hi, Es existiert eine MySQL-Tabelle mit Namen 'Tabelle', darin befinden sich mehrere Felder, eines davon ist der Primaerschluessel 'ID' ...
![]() |
| | #1 (permalink) |
![]() Registriert seit: 06.01.07 ![]() Likes: 0 | Anzeige Hi, Es existiert eine MySQL-Tabelle mit Namen 'Tabelle', darin befinden sich mehrere Felder, eines davon ist der Primaerschluessel 'ID' mit auto_increment. Wenn ich jetzt mittels Code: INSERT INTO `Tabelle` (...) VALUES (...); Wie komme ich jetzt an eben diese ID, des _gerade_ erzeugten Datensatzes ran? Code: SELECT MAX(`ID`) FROM `Tabelle`; - MfG Keks :) |
| | |
| | #2 (permalink) |
| Senior Member Registriert seit: 27.06.04 ![]() Likes: 0 | Da das mit MAX ('ID') ja nicht immer klappt könntest du noch eine Spalte timestamp einfügen. Dann machst du in php eine Variable $ts = time() fügst diese mit in die Zeile ein und liest sie nachher so aus: SELECT ID from 'Tabelle' WHERE timestamp = $ts |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Steht alles in der Doku ... http://dev.mysql.com/doc/refman/5.0/...increment.html Hier wirst du in Bezug auf die letzte Auto-ID auf die API-Funktion mysql_insert_id() verwiesen. Wenn man das im PHP Manual nachschlägt, findet man ebenfalls eine Funktion mit dem Namen mysql_insert_id(), welche der obigen MySQL-Funktion entspricht. Da diese Funktion verbindungsorientiert ist, kann es nicht passieren, dass dir jemand in der Zwischenzeit den Wert überschreibt. mfg, metax.
__________________ Wenn keiner zuschaut, teile ich heimlich durch Null! Meine Homepage: Planet Metax | meine Bilder: DeviantArt | Twitter | |
| | |
| | #4 (permalink) |
| Member of Honour ![]() | schonmal nach LAST_INSERT_ID gegooglet? das hilft dir weiter, falls du mit php arbeitest. mysql_insert_id() edit: mist, da war einer schneller!
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| | #5 (permalink) |
![]() Registriert seit: 06.01.07 ![]() Likes: 0 | Danke, das hat mir schonmal geholfen ![]() Es handelt sich uebrigens um Perl, nicht um PHP, da ich aber auf der Suche nach einem passenden SQL-Befehl war, dachte ich nicht dass es relevant sei die Sprache zu nennen ![]() - MfG Keks |
| | |
| | #6 (permalink) |
| Senior Member Registriert seit: 27.06.04 ![]() Likes: 0 | Gut zu wissen. Wenn ich das richtig verstanden habe gibt mysql_insert_id() die ID des letzten inserts zurück, unabhängig von dem was in zwischenzeit mit der db passiert ist? |
| | |
| | #7 (permalink) |
| Member of Honour ![]() | da binsch mir nicht ganz sicher, aber ich hab beim rumsuchen über da sproblem mal was von begin / commit blöcken gelesen, damit geschiet die aktion auf einmal und du bekommst mit sicherheit die die zum dem eingefügen datensatz zurück
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| | #8 (permalink) | |
| Registriert seit: 22.10.07 ![]() Likes: 0 | Zitat:
Allerdings klappt das mit dem Timestamp auch nicht, weil ja in der gleichen Sekunde ein anderer Datensatz entstanden sein kann. Wenn man nun aber einen verschlüsselten eindeutigen String nehmen würde, würds klappen. Natürlich darf man jetzt nicht den timestamp verschlüsseln, weils wieder den gleichen String geben könnte, aber man könnte zum Beispiel, wenn eine Userverwaltung vorhanden ist oder so, den Benutzer + timestamp verschlüsseln. Code: md5('AmShaegar1223849258'); Code: SELECT id FROM tabelle WHERE key LIKE 'md5('AmShaegar1223849258')' Ich hoffe das hilft eher ![]() MfG AmShaegar | |
| | |
| | #9 (permalink) |
| Member of Honour ![]() | wieso wird die transaktionsgeschichte komplett ignoriert? Code: mysql_query("begin");
$res = mysql_query("insert_bla_bla_bla");
$id_res = mysql_query("SELECT LAST_INSERT_ID();")
mysql_query("commit");
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| ID datensatz abrufen | gugugs | (Web-) Design und webbasierte Sprachen | 3 | 17.01.08 21:23 |
| HST-Datensatz | parkouma | Internet Allgemein | 11 | 08.04.07 15:04 |
| SQL abfrage zeigt nur einen Datensatz an obwohl es mehrere sein müssten | ba2 | (Web-) Design und webbasierte Sprachen | 3 | 28.05.06 20:45 |
| Mit neuem RAM funktioniert nichts | ripperchris | Hardware Probleme | 6 | 17.08.05 20:07 |
| Datensatz in Mysql Datanbank erstellen | Flou | (Web-) Design und webbasierte Sprachen | 11 | 02.11.03 16:08 |