Ich arbeite mit Php und MySql an einer Website. Wie kann ich bestimmte Werte in einer Tabelle stündlich mit einer bestimmten Zahl addieren?

... komplette Frage anzeigen

3 Antworten

Oder direkt nach dem ersten Aufruf der nach Mitternacht geschieht den Wert aktualisieren lassen.

Grüße

Antwort bewerten Vielen Dank für Deine Bewertung

Hallo selbstversändlich gibt es auch eine reine MySQL lösung. Das Stichwort heißt "Event".

Kleiner Beispielcode:


#Tabelle:
CREATE TABLE `test` (
`spalte1` INT(11) NULL DEFAULT NULL,
`spalte2` INT(11) NULL DEFAULT NULL
);

#Event
CREATE DEFINER=`root`@`localhost` EVENT `addieren_spalten`
ON SCHEDULE
EVERY 1 SECOND STARTS '2016-06-14 08:03:30'
ON COMPLETION NOT PRESERVE
ENABLE
COMMENT ''
DO BEGIN
UPDATE test SET spalte1 = spalte1 + spalte2;
END



Lege belibig viele Zeilen in der Tabelle Test an, der wert in spalte zwei wird durch das Evenet jede Sekunde auf den wert in spalte1 addiert.

Um um Mitternacht einen bestimmten Wert auf ein anderen zu addieren kannst du ähnlich verfahren, das Event würde dann so aussehen:

#Event
CREATE EVENT `midnight`
ON SCHEDULE
EVERY 1 DAY STARTS '2016-06-14 00:00:00'
ON COMPLETION NOT PRESERVE
ENABLE
COMMENT ''
DO BEGIN
SET @wert = 100;
UPDATE test SET spalte1 = @wert;
END


Dieses Eventsetzt immer um Mitternacht (Start 0Uhr und dann alle 24h) den Wert in der spalte 1 auf den inhalt der Variable @wert .


Ganz Wichtig ist, damit dies überhaupt Funktioniert, musst du den event_scheduler deiner MySQL Datenbank aktivieren. Bei den meisten Hostern ist dies aber nicht möglich.

#event_scheduler
SET @@global.event_scheduler = 'ON';
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von fluffiknuffi2
14.06.2016, 09:53

Zwei Frage dazu:

1. Also ist der Event Scheduler per Default deaktiviert?
2. Aber wenn er aktiviert ist dann läuft er und führt Events aus? Sprich ich kann auf einen Cron-Job verzichten, der ein PHP-Skript aufruft, dass den MySQL-Code ausführt?

0
Kommentar von MYSQL5
14.06.2016, 11:44

Da ich einen eigenen Server einrichte, kann ich alles selbst bestimmen. Danke für die schnelle, hilfreiche Antwort!

0

Mit cronjobs sollte das sehr leicht zu lösen sein.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?