gleichzeitiger datenbank zugriff
wpo
- php
hi leute,
ich such ein paar anregungen für mein problem
als erstes werd ich mal das ganze beschreiben :
ich habe eine datenbank, in die ich einen datensatz schreiben will, unter anderem auch eine bild datei, die bild-datei wird als string eingebunden, dieser verweisst dann auf den speicherort der datei.
das ganze soll so ablaufen:
ich frage meine datenbank nach der ID des letzten datensatzes z.B, 400
jetzt verschiebee ich meine bilddatei und nenne sie um und zwar in
bild-401 ( bild-ID+1). jetzt kann ich zwar schön meine daten in die datenbank schaufeln und ich kann einen datensatz mit der ID 401 anlegen und alles funktioniert ganz toll
aber was ist, wenn mehrere users gleichzeitig daten eingeben wollen ?
das risiko ist zwar in dem konkreten beispiel gering aber es ist vorhanden.
dann gehört mein bild evneutell zu dem datensatz ID 401 --> bild-401, mein datensatz wäre z.B. die ID 402.
der schlammassel ist perfekt
ich habe zwei bilder mit jeweils dem namen bild-401 eingebunden und zwei datensätze, die den selben link zu genau diesem bild enthalten
gruß wpo
Hi,
ich frage meine datenbank nach der ID des letzten datensatzes [...]
aber was ist, wenn mehrere users gleichzeitig daten eingeben wollen ?
die Datenbank liefert Dir die ID des letzten Inserts innerhalb der bestehenden Verbindung zurück. Es können in der Zwischenzeit tausend neue Datensätze erzeugt worden sein, das stört kein bisschen.
Cheatah
echo $begrüßung;
aber was ist, wenn mehrere users gleichzeitig daten eingeben wollen ?
Ich nehme mal an, dass du MySQL verwendest. Erzeuge die nächste ID nicht durch Selbstberechnung sondern lasse sie beim Einfügen eines Datensatzes per auto_increment-Spalte automatisch hochzählen. Die so entstandene Zahl kannst du mit SELECT LAST_INSERT_ID() oder mysql_insert_id() ermitteln. MySQL sorgt dafür, dass du deine ID bekommst und nicht die von parallel ablaufenden Datenbanksitzungen.
Eine andere Möglichkeit wäre noch, während der eigenen Verarbeitung die Datenbankzugriffe für andere zu sperren: LOCK TABLES and UNLOCK TABLES Syntax.
echo "$verabschiedung $name";
danke für eure antworten, ich wusste nicht, das sucg mysql mehr oder weniger selbst darum kümmert, danke :)