[PHP/MySQL] SELECT FROM... aktualität mitten im Script

Goltergaul

Well-known member
ID: 17553
L
26 April 2006
480
7
Hi ich habe ein kleines Problem. Ich habe ein script das Werte in der Datenbank verändert, die weiter unten im script evt. nochmal benötigt werden und per SELECT wieder aus der DB gelesen werden. Leider sind diese Daten nicht aktuell, ich vermute dass die schon vorher im Arbeitsspeicher gecached werden, und somit nicht die bereits veränderten Daten ausgelesen werden. Jetzt meine Frage: Wie kann ich das austricksen?
Die Daten von oben in eine Var. schreiben ist bissl kompliziert, da der obere Teil meistens nicht zusammen mit dem unteren ausgeführt wird. Und probleme Gibt es eben nur bei gleichzeitiger Ausführung, die ich zwar vermeiden könnte, das aber ungern machen würde. Any ideas?
 
Evtl hilft ein LOCK TABLES. Da kenn ich mich aber ned aus, hierzu mal das Manual befragen, ob dir das weiterhelfen kann.
 
für lock-table braucht man bei mysql glaub noch nen paar mehr userrechte als normal... im regelfall ist sowas aber auch mit nen bissel vorsicht zu genießen, sonst schießt man sich das ganze script/db ab..

wenn du aber etwas ändest und es später wieder ausliest, erhälst du 100%-ig die neuen werte. wenn das nicht so ist, dann stimmt irgendwas anderes nicht. wenn du die werte in einer variable zwischenspeicherst, dann würdest du aber ebenfalls nur auf alten und nicht auf neuen daten arbeiten. sowas könntest du aber einfach lösen, indem du eine fkt schreibst die dir deine daten liefert und sofern schonmal abgerufen diese mehrfach zurückgibt. über referenz (also keine kopie dieser daten) können dadurch alle prozesse die gleichen daten bearbeiten, nur willst du bestimmt was ganz anderes machen ..
 
Hm naja also ich will eig bloß die aktuellen daten. Aber wo ist da jetzt der unterscheid zwischen einem normalen query und einem query in einer Funktion? Wegen LOCK TABLES werd ich mich mal schlau machen, an Rechten solls nicht mangeln ;)
 
Hab ich das richtig verstanden?:

1) Datenabfrage = A
2) Datenänderung A = B
3) Datenabfrage = A (statt B)

Kann es sein, dass Du eine ältere mysql 4.0 Version verwendest und der Query Cache aktiviert ist? Hab das nur noch dunkel in Erinnerungen, aber da gabs doch mal Probleme, dass mysql im Cache nicht korrekt verarbeitet wenn sich kürzlich etwas an den Daten geändert hat.
 
@exportforce:
Goltergaul schrieb:
Die Daten von oben in eine Var. schreiben ist bissl kompliziert, da der obere Teil meistens nicht zusammen mit dem unteren ausgeführt wird. Und probleme Gibt es eben nur bei gleichzeitiger Ausführung, die ich zwar vermeiden könnte, das aber ungern machen würde. Any ideas?

@Eckieck: Ich erkundige mich mal ;)
 
Man muss das ja nicht vor allem anderen machen, sondern einfach genau vor den ändernden abfragen