dedlfix: Verrechnet

Beitrag lesen

Hi!

Ich korrigiere als erstes die Anführungszeichen:
Die sind im Produktivcode einmal escaped, insofern quasi identisch zu Deiner Korrektur.
Doppelte Anführungszeichen für Zeichenkettenliterale in SQL-Anweisungen sind in aller Regel keine gute Idee.

Kleine Anmerkung. Das sind keine doppelten Anführungszeichen im SQL-Sinne sondern ein im Original wohl maskiertes " und ein Zeichenkettenende-" von PHP.

Ach so: Selbstverständlich halte ich es für einen Designfehler, in einer DB-Tabelle für Zeitstempel Integerwerte zu verwenden statt des angemessenen Datentyps TIMESTAMP. Du hast es viel leichter beim Vergleich und kannst die eingebaute Magie dieses Datentyps nutzen.

Genau, dann kämen nämlich auch solche Konstrukte mit weniger Code aus:

time_to_sec(timediff(now(), FROM_UNIXTIME(last_update)) < $maxpause)

Es ist außerdem immer eine gute Idee, den Vergleichswert auszurechnen und diesen mit einem Spaltenwert zu vergleichen, denn dann kann das DBMS einen eventuell vorhandenen Index auf der Spalte verwenden, als aus einem Spaltenwert etwas zu berechnen und das zu vergleichen, denn diese Berechnung muss für jeden Wert der Spalte einzeln durchgeführt werden.

In dem Fall wäre also aus NOW() - $maxpause ein neuer Zeitpunkt zu ermitteln, und last_update (das als echter TIMESTAMP oder DATETIME vorliegt) damit zu vergleichen: last_update > NOW() - INTERVAL $maxpause SECOND

Lo!