ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
252
252
EMPFEHLEN
-
17.10.08 09:14 #1
- Registriert seit
- Aug 2005
- Beiträge
- 436
Hi
Habe mal eine Frage, wie macht ihr es wenn ihr Daten in eine Datenbank(hier MySQL) schreibt und danach mit der ID des Datensatzes weiterarbeiten wollt?
Bei vielen Userzugriffen ist mysql_insert_id wahrscheinlich zu ungenau oder?
-
17.10.08 09:52 #2
- Registriert seit
- Apr 2004
- Ort
- Die heimliche Hauptstadt des Bieres
- Beiträge
- 579
Bei der Schnelligkeit der Operation ist es zwar recht unwahrscheinlich, daß sich da noch ein weitere Datensatz dazwischen drängelt, im Zweifelsfall selektiere ich genau auf die relevanten Daten, die vorher geschrieben wurden. Es muß da nur sichergestellt sein, daß es da keine doppelten Einträge geben kann. Z.B. wären mMn Name, Adresse, Geb.datum ausreichend eindeutig.
Andere Lösung: entweder die Unix Systemzeit oder (noch genauer) die Javascript Zeit in ein separates Feld schreiben und danach selektieren.
-
Naja, mysql_insert_id() bezieht sich ja auf die INSERTs der aktuellen Skript-Instanz, da brauchst du keine Angst haben, durcheinander zu kommen.
Verwechsel das nicht mit der LAST_INSERT_ID von MySQL...das könnte sehr wohl zu Überschneidungen führen
-
17.10.08 10:32 #4
- Registriert seit
- Aug 2005
- Beiträge
- 436
Ahh ok, dann macht das ja keine Probleme, besonders, da ich auch noch die Kennung mitgebe, danke für die Infos
-
17.10.08 11:23 #5
- Registriert seit
- Aug 2005
- Beiträge
- 436
Habe da nochmal eine Frage:
Ich verwende in einem Script nacheinander mehrere SQL Statements, zum Beispiel auch welche die Daten verändern.
Wie gehe ich nun damit um wenn ich zum Beispiel ein Statement einen Fehler verursacht hat und ich dadurch das Script sozusagen abbreche und dem User mitteile, dass ein Fehler aufgetreten ist. Nun ist ja das Problem, dass ich schon Daten verändert habe zum Beispiel, wie kann ich das wieder rückgängig machen?
Sowas wie ein Speicherpunkt wäre toll, allerdings darf der nur Sachen beinhalten die dann in dem script passieren und nicht zum Beispiel von anderen User.
Irgendwer eine Idee? Denke ich vielleicht ein bisschen falsch?
-
Gute Frage-Schwere Frage

Einfach geantwortet würde ich sagen: Vermeide Fehler...wie genau das auszusehen hätte, hängt von deinen Querys ab.
Ansonsten: Bevor du etwas an der DB änderst, könntest du die betroffenen Datensätze zwischenspeichern, damit du sie später wiederherstellen kannst...das kann aber je nach Komplexität der Queries recht aufwändig werden....deshalb würde ich unbedingt die einfache Variante vorschlagen.
-
17.10.08 12:08 #7
- Registriert seit
- Apr 2004
- Ort
- Die heimliche Hauptstadt des Bieres
- Beiträge
- 579
Versuche so weit wie möglich, alle Daten vor dem ersten Schreibvorgang zu prüfen. Nur wenn alle Daten in Ordnung sind gehst du weiter zu den Änderungen. Dadurch kann es zwar passieren, daß ein paar Operationen doppelt ausgeführt werden aber lieber so als daß du hinterher wieder zurückrudern mußt.
-
17.10.08 12:30 #8
- Registriert seit
- Aug 2005
- Beiträge
- 436
Mhhh muss ich mir nochmal ein paar Gedanken drüber machen, Problem ist einfach dass ich mit manchen Daten erst arbeiten kann wenn ich schon etwas an der Datenbank geändert habe.
Die Idee von Sven ist schon nicht schlecht mit dem zwischenspeichern, aber wahrscheinlich eher sehr kompliziert und performancelastig, dass beste wäre, wenn die INSERTs und UPDATEs automatisch analysiert werden und man sozusagen ein gegenQuery bekommt, mit dem man dann die Veränderung rückgangig machen kann
-
20.10.08 08:29 #9
- Registriert seit
- Aug 2005
- Beiträge
- 436
Mhhh das mit dem überwachen der Daten finde ich gar nicht mal so schlecht, allerdings würde das bedeuten, dass ich einiges speichern muss und außerdem am Besten auch noch einen Standard brauche, wie ich meine Statements aufbaue, naja was heißt Standard, standard sind sie ja schon, aber ne Möglichkeit wie ich das ganze auseinandernehme und analysiere
Sowas in der Art wäre schönPHP-Code:$save = $db->savepoint();
$db->query();
$db->query();
$db->insert();
$db->update();
$db->query();
//Bei Fehlern
$db->restore($save);
Ähnliche Themen
-
Praktikumsbeurteilung. Im selben Bereich weiterarbeiten.
Von applefan im Forum Ausbildung & BerufAntworten: 1Letzter Beitrag: 08.09.10, 15:23 -
Mit abgefragten Daten aus Datenbank weiterarbeiten ... aber wie ?
Von Surfer100 im Forum PHPAntworten: 12Letzter Beitrag: 12.05.08, 00:47 -
mysql: mysql-server: mysql.sock fehlt (Suse 9.1)
Von zappoth im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 08.05.06, 18:06 -
Mit Hexacode weiterarbeiten
Von tommy07 im Forum C/C++Antworten: 2Letzter Beitrag: 22.04.05, 22:47 -
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Von strandjunge im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 19.01.05, 15:33





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren