Hallo Vinzenz,
vorab vielen Dank dafür, dass Du Dich mit meinem Problem auseinandersetzt.
Nun zu den einzelnen Punkten:
Ich gehe davon aus, dass Dein Produktivcode anders aussieht.
Sicher sieht er das. Ich fand es eine gute Idee, eine Essenz aus dem Code zu zitieren, gebe aber zu, dass mir dabei kleine Fehler unterlaufen sind.
Ich korrigiere als erstes die Anführungszeichen:
Die sind im Produktivcode einmal escaped, insofern quasi identisch zu Deiner Korrektur.
last_update = '" . time() . "', -- hier ist ein Komma zuviel
Klar. Hab ich vergessen, wegzunehmen. Im Produktivcode werden mehrere Spalten upgedatet, daher kommt das Komma.
Wenn aus irgendeinem Grund mysql_query() fehlschlägt, was immer mal passieren kann,
Ist das wahr? Ok, das hätte ich einfach nicht gedacht. Was ist hieraus die sinnvolle Konsequenz für meinen Code?
Beachte dazu den zweiten Hinweis im Handbuch zu mysql_affected_rows(), ich zitiere:
<zitat>
Hinweis: Benutzen Sie UPDATE wird MySQL keine Spalten aktualisieren,
bei denen der neue dem alten Wert entpspricht. Das kann dazu führen,
dass mysql_affected_rows() nicht die tatsächliche Anzahl der betroffenen
Zeilen liefert, sondern nur die, die wörtlich durch die Anfrage betroffen
sind.
</zitat>Wird das Skript zweimal innerhalb der gleichen Sekunde aufgerufen und erfolgreich abgearbeitet, so wird der Benutzer herausgeworfen.
Ohne den Hinweis aus der Doku gekannt zu haben, war ich mir dieser Tatsache schon bewußt. Deshalb habe ich eine Spalte mit einem unique Zufallswert, der ebenfalls innerhalb obiger Query upgedatet wird, sodaß ich dieses Problem behoben haben sollte.
Heißt im Umkehrschluss, dass gem. Deiner Hinweise eingentlich nur noch ein Fehlschlagen der Query für einen ungewollten User-Logout in Frage kommt?
Viele Grüße, Steffen