![]() |
php mysql problem mit kundenanmeldung und id
hallo
habe da ein keines prob habe da ein formualr bei dem sich kunden neu anmelden können name vorname usw. und auch ein passwort feld wenn alle felder ausgefüllt sind wird eine kunden nummer automatisch (id) vergeben (die kann der kunde nicht selber wählen ) in der sql datenbank den id und das passwort benötigt er dann später zum einloggen nur das problem ist dass der kunde seine kunden nr (id) nicht kennt da die ja von der datenbank automatisch erzeugt wird wie soll ich jetzt eine ausgabe (abfrage) machen und dem neuen kunden seine kunden nr zeigen damit er sch später einlogen kann ? gruß fenster |
Hi!
Nachdem du deine Insertabfrage ausgeführt hast kannst du die letzte generierte ID auslesen, dies macht man so: zb Insert: INSERT INTO tblUser(Name) VALUES ('Hr. Maier'; Abrufen der ID: SELECT LAST_INSERT_ID( ) Das liefert dir genau einen Wert mit der zuletzt hinzugefügten ID zurück. Eine zweite Variante wäre, dass du einfach den maximalwert der ID auslest, also "Select max(ID) from tblUser" oder "select max(ID) from tblUser WHERE Name='Hr. Maier'" mfg Thomas |
Dazu würde ich mir aber das hier anschauen:
http://dev.mysql.com/doc/mysql/en/Tr..._Commands.html Damit sich nicht zwei gleichzeitig anmelden können, und dann eventuell die falsche id ausgegeben wird. gruss, snowman |
Zitat:
hier nach dem eintragen in die db kannst mit dem code die id abfragen $lastid = mysql_insert_id(); |
Zitat:
Wenn sich zwei Leute zu einem ziemlich genau gleichen Zeitpunkt anmelden kanns es dazu kommen, dass die beiden inserts zum fast gleichen zeitpunkt ausgeführt werden. danach liest du die letzte id aus - dadurch kriegst du dann zweimal die gleiche (letzte) id zurück. Deshalb sollte man das über eine Transaction machen (wusste selber gar nicht das des bei mysql gibt, kenn des nur ms-sql). mfg Thomas |
gut zu wissen... das wusste ich bis jetzt noch nicht.. hab gedacht das es zu diesem problem nicht kommt bei autoincrement
|
Zitat:
gruss, snowman |
ich habe es so gemacht
hallo
ich hab das prob so gelöst printf("Ihre Kunden Nr. ist: %d\n", mysql_insert_id()); gruß fenster |
@snowman
juhu ich habs verstanden :D :D @fenster naja, genau das ist es eben nicht. Angenommen du machst zwei inserts fast gleichzeitig, dann ist die last_insert_id die insgesamt letze id. einfaches bsp (timestamp/geschehen): 01: php-script-insert, id wäre 5 02: php-script-liest id aus -> 5 01: php-script-insert (1. user), id wäre 5 02: php-script-insert (2. user), id wäre 6 03: php-script-liest (1. user) id aus -> kriegt 6 04: php-script-liest (2. user) id aus -> kriegt 6 Ich würd sowieso dem kunden einen namen und ein passwort geben und ihm ned die ID geben. Persönlich arbeite ich in php/mysql auch ned mit transactions, da bei mir höchstens jemand der einen neuen Forumthread erstellt zum falschen Thread weitergeleitet wird -> sein Pech. mfg Thomas |
Alle Zeitangaben in WEZ +2. Es ist jetzt 06:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag