SQL Zeilen mit bestimmten Kriterien updaten

flogy92

Mitglied
Hallo Leute!

Ich bin auf folgendes Problem gestossen:
In einer MySQL-Datenbank habe ich alle Informationen zu den angemeldeten User gespeichert. Wenn sich diese einloggen, wird die Session-ID in diese Tabelle geschrieben. Diese soll nun beim Ausloggen oder nach 10min Inaktivität automatisch gelöscht werden.
Um dies zu verwirklichen habe ich eine zusätzliche Spalte "LastClick" gemacht. Dort wird abgespeichert, wann der letzte Link von dieser Person angeklickt wurde.
Jetzt möchte ich aber, dass jedes mal, wenn die Website aufgerufen wird (egal von wem) alle Zeilen dieser Datenbank gechekt werden; und zwar ob sie eine Session-ID enthalten und wenn ja, ob der Zeitstempel schon weiter als 10min zurückliegt. Alle gefundenen Zeilen sollen geupdatet werden (SET Session=false).

Wie stelle ich das am einfachsten (also mit möglichst wenig Code) an?


Vielen Dank im Voraus!

MfG flogy
 
Ja, dann wäre der Code ja so:
Code:
UPDATE
       tabelle
SET
       Session=false
WHERE
       time<maximalesalter AND Session != false;

Aber - nur um mich zu vergewissern - werden da ALLE Zeilen beachtet? Also wird mit diesem Code die komplette Tabelle durchsucht und geupdatet? Ich muss da 100%ige Garantie haben...


MfG flogy
 
Zuletzt bearbeitet:
Ja. So wird jede einzelne Zeile durchgegangen, geprüft und, wenn nötig, verändert.

Allerdings ist das "AND Session != false" hierbei unnötig. da du ja eben nur die Session auf false setzt.
Du verhinderst damit nur das eine Session die eh schon ein false hat nochmal mit einem false überschrieben wird.

Edit: Hmm vieleicht giebt es da aber einen Geschwindigkeitsunterschied. Werde ich mal bei gelegenheit Benchmarken. :)
 
Zuletzt bearbeitet:
Naja, ich bin mich von anderen Sprachen daran gewohnt, automatisch auch auf die Geschwindigkeit zu achten. Aber dann werde ich es mal ohne machen.

Vielen Dank für die Hilfe! Es scheint nun tatsächlich zu klappen!


MfG flogy92
 
Zurück