art-d-sign
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 16.06.2008, 17:14   #1
TP-Member
 
Registriert seit: Jun 2008
Ort: Halle
maydayz macht alles soweit korrekt

datenbank id speichern wenn eintrag erfolgt


Hallo ihr.
Meine frage diesmal:
Also der user füllt ein formular aus was dann an die datenabnk übertragen wird.
id_anz ist der primär key,
bei dem eintrag wird automatisch eine neue id_anz angelegt also, ich mein die zahl die ganz vorn steht.
wenn der eintrag erfolgt ist soll die neue id_anz dann in einer variable gespeichert werden, damit ich danach damit weiter arbeiten kann.
Aber wie funkioniert das?
ich hoffe ich hab das etwas verständlich erklärt.
maydayz ist offline   Mit Zitat antworten


Alt 16.06.2008, 17:21   #2
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
Du musst halt mit einer Query die zuletzt angelegte ID abfragen, z.B.

SELECT LAST_INSERT_ID() FROM `deine_tabelle`
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist offline   Mit Zitat antworten
Alt 16.06.2008, 17:25   #3
TP-Member
 
Registriert seit: Jun 2008
Ort: Halle
maydayz macht alles soweit korrekt
oh danke, ist ja doch so einfach
maydayz ist offline   Mit Zitat antworten
Alt 16.06.2008, 23:50   #4
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Zitat:
Zitat von Boris Beitrag anzeigen
SELECT LAST_INSERT_ID() FROM `deine_tabelle`
Alternativ dazu geht auch mysql_insert_id. Auf diese Weise ist keine zusätzliche Abfrage der DB nötig um an die zuletzt vergebene ID zu kommen.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
.
Rizzo ist gerade online   Mit Zitat antworten
Alt 17.06.2008, 01:32   #5
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
mysql_insert_id macht nichts anderes als die DB abzufragen - man "spart" also nicht wirklich eine Abfrage.

Auch wichtig:
Zitat:
Warnung

mysql_insert_id() konvertiert den Typ der Rückgabe der nativen MySQL C API Funktion mysql_insert_id() in den Typ long (als int in PHP bezeichnet). Falls Ihre AUTO_INCREMENT Spalte vom Typ BIGINT ist, ist der Wert den mysql_insert_id() liefert, nicht korrekt. Verwenden Sie in diesem Fall stattdessen die MySQL interne SQL Funktion LAST_INSERT_ID() in einer SQL-Abfrage.
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist offline   Mit Zitat antworten
Alt 17.06.2008, 01:39   #6
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Zitat:
Zitat von Boris Beitrag anzeigen
mysql_insert_id macht nichts anderes als die DB abzufragen - man "spart" also nicht wirklich eine Abfrage.
Nö, denn dieser Wert wird mit jedem INSERT automatisch zurückgegeben. Man hat also nur die eine INSERT Anweisung. Bei dem LAST_INSERT_ID wird nach dem INSERT INTO zusätzlich noch ein SELECT an die DB geschickt.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
.
Rizzo ist gerade online   Mit Zitat antworten
Alt 17.06.2008, 02:01   #7
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
Und das steht wo?

Versteh mich nicht falsch, aber wo wird denn der Wert hin zurückgegeben, bzw. gespeichert? Ich würd es dann auch schon genauer wissen

So oder so bleibt die Problematik, falls man die IDs als BIGINT definiert hat - insofern ist die PHP Funktion mysql_insert_id zwar eine Möglichkeit, aber nicht die beste, um die neuste ID zu ermitteln.
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris

Geändert von Boris (17.06.2008 um 02:07 Uhr).
Boris ist offline   Mit Zitat antworten
Alt 17.06.2008, 02:25   #8
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Hi Boris,

naja, als Programmierer sollte man schon wissen ob man Bigint benutzt hat oder nicht. Ich persönlich habe noch nie Bigint als Feldtyp benutzt und habe auch noch nie gesehen das es jemand anderes für seinen auto_inc genommen hat. Wieso auch, wenn Int unsigned bis 4294967295 geht, was wohl mehr als ausreichend sein sollte und dabei nur halb so viel Platz (4 Byte pro Zeile) belegt wie Bigint (8 Byte pro Zeile).

Zu deiner Frage wo dieser Wert gespeichert wird. Keine Ahnung, in irgend einem internen Speicher eben. Das es aber so ist kannst Du sehr leicht auf deinem Xampp testen. Erstelle eine Testtabelle, ein kleines Script dazu das einen Dummyeintrag in die Tabelle macht. Hier kommt der Trick: zwischen dem INSERT INTO im Script und dem echo mysql_insert_id(); schickst Du das Script 20 Sekunden schlafen (sleep). In diesen 20 Sekunden beendest Du im Dienstemanager den MySQL Dienst, so das überhaupt kein SQL Server erreichbar ist. Du wirst sehen, wenn das Script nach 20 Sekunden aufwacht wird es die zuletzt eingefügte ID ausgeben. Das könnte es wohl nicht, wenn es erst nochmal die DB kontaktieren müsste um die ID abzufragen.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
.
Rizzo ist gerade online   Mit Zitat antworten
Alt 17.06.2008, 03:06   #9
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
Ok, danke für die Informationen

Einen kleinen Nachteil hat es dennoch - man kann nicht (wie bei einem SELECT) eine bestimmte Tabelle explizit angeben.
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist offline   Mit Zitat antworten
Alt 17.06.2008, 03:35   #10
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Die zuletzt eingefügte ID bezieht sich immer auf die Verbindung, genau wie viele andere Statements auch. Deswegen sollte man auch immer die Verbindungskennung mit angeben, sonst wird automatisch die zuletzt offene Verbindung benutzt. Wenn man verschiedene Verbindungskennungen hat, kann man damit natürlich auch separate die zuletzt eingefügten IDs ermitteln.
Wie auch immer, letztendlich ist das in der Praxis aber eher eine Glaubensfrage, ob man die ID auf dem einen oder anderen Weg ermittelt. Deswegen nannte ich es oben auch "Alternative" und nicht "nur so ist's richtig"

Denn auch die LAST_INSERT_ID() Methode hat Nachteile. So wird hier wirklich immer die zuletzt eingefügte ID zurückgeliefert. Was aber, wenn man an einer großen Seite mehrere Redakteure hat, die gleichzeitig Datensätze hinzufügen? Unter Umständen überschneiden sich Einträge und zwischen dem INSERT Statement und dem LAST_INSERT_ID Statement wurde ein weiterer Datensatz in die DB geschrieben - in dem Fall bekäme man die falsche ID zurückgeliefert. Unwahrscheinlich, aber möglich! Das Problem würde bei der mysql_insert_id Methode nicht auftreten, weil hier die ID sofort mit dem Insert zurückgeliefert wird und diese über die eindeutige Verbindungskennung abfragbar ist.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
.
Rizzo ist gerade online   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
datenbank id speichern wenn eintrag erfolgt datenbank id speichern wenn eintrag erfolgt
« Checkbox wert in datenbank | RegEx: bis zum Zeilenumbruch suchen/ ersetzen »

Stichworte
datenbank, mysql

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Eintrag in Datenbank über HTML/PHP Formular Cornerstone Traum-Dynamik 8 13.04.2006 13:50
Bild Upload mit Datenbank eintrag DennisCM Traum-Dynamik 0 24.10.2005 18:10
eintrag in datenbank funtzt net hallmi Traum-Dynamik 4 01.06.2005 19:15
Nur Anzeigen wenn Eintrag badeplatz Traum-Dynamik 11 14.04.2005 22:48
Weiterleitung auf HTML Seite wenn in Datenbank kein Eintrag vorhanden ist em-factory Traum-Dynamik 5 06.10.2004 10:40


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:28 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67