Mailinglisten-Archive |
Andreas Vent-Schmidt schrieb am Mittwoch, den 7. Juli 1999: > > Wenn jemand Fragen zu MySQL oder allgemein SQL-Problemen hat, > > werde > > ich im Rahmen meiner Zeit gerne zu Helfen versuchen. > > Hallo Martin, > > da habe ich doch glatt eine Frage...;-) Das war gemein, weil ich gerade dann keine Zeit mehr hatte! :) > Und zwar geht es um last_insert_id(), was ich auch mit Handbuch > noch nicht zur Funktion gebracht habe. [...] > mysql_query("insert into myTable values(´´,´Meier´,´Hans´...)"); > > wobei das erste Feld ein auto_increment integer ist, und ich > gleich anschliessend den neuen Wert dieses Feldes mit > > select last_insert_id() from myTable > > abfragen will, bekomme ich keinen vernuenftigen Wert. Woran kann > das liegen? Eins vorneweg: Schreibe bei ähnlichen Problemen bitte nicht nur, daß irgendwas nicht richtig funktioniert, sondern _genau_, was passiert. Dann kann Dir oft viel leichter geholfen werden! Zum Problem: Es sollte einfach nur SELECT LAST_INSERT_ID(); heißen. Denn dieser Wert wird _nicht_ jeweils pro Tabelle gespeichert, sondern einmal für alle Tabellen zusammen verwaltet und gibt immer die gesamt gesehen zuletzt eingefügte ID an. Ein weiterer Punkt: Stilistisch fände ich es schöner und korrekter, eine AUTO_INCREMENT- Spalte mit einem der "magischen" Werte 0 oder NULL zu belegen und nicht mit '', da es sich doch um eine numerische Spalte handelt. Das Einfügen von '' geht zwar auch, aber nur, weil dieser String vor dem Einfügen in eine Zahl konvertiert wird und halt den Wert 0 ergibt. Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ > PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7
php::bar PHP Wiki - Listenarchive