dedlfix: Jede 10 Minuten etwas in die Datenbank schreiben

Beitrag lesen

Tach!

Sorry, mit "er" meine ich, meinen Code.

Ok, ist aber trotzdem noch zu ungenau. Das schöne an Code ist ja, dass man ihn Anweisung für Anweisung nachvollziehen kann. Das schlechte ist, dass man genau das beim Debugging tun muss.

Du hast da also Code, und der verhält sich insgesamt nicht so, wie er soll. Als Programmierer musst du nun genauer hinsehen und statt "funktioniert nicht" eher sowas sagen wie "Da ist diese bestimmte Zeile Code, da erwarte ich eigentlich XYZ, bekomme aber ABC." Es ist nicht weiter tragisch, wenn du an der Stelle nicht weiterweißt, aber die Vorarbeit, wenigstens bis an diesen Punkt zu kommen, wirst du tun müssen.

			SELECT
			*
			FROM profil_aufrufe WHERE user_id = :id AND aufrufer_id = :user_id AND date < DATE_SUB(CURDATE(), INTERVAL 1 MINUTE) ORDER BY DATE DESC LIMIT 1;

Ist hier vielleicht deine Logik falsch? Zum einen liefert CURDATE() ein Datum ohne Zeitanteil, da willst du wohl eher NOW() haben. Und dann möchtest du doch wissen, ob in den vergangenen 10 Minuten (im Test auf eine reduziert) bereits etwas passiert ist, oder? Dann mach doch mal eine Prüfung mit diversen Werten. Es ist jetzt angenommenerweise 11:30 und DATE_SUB(NOW(), INTERVAL 1 MINUTE) liefert 11:29. Deine Bedingung wird dann wahr, wenn die Uhrzeit in der Tabelle älter/kleiner als 11:29 ist. Ist es das, was diese Abfrage ergeben soll? Zudem muss in "date" auch ein DATETIME enthalten sein.

Die Problembeschreibung wäre also in dem Fall nicht, dass irgendein Insert nicht funktioniert, sondern dass du bei dieser Abfrage eine unerwartete Anzahl Ergebnisse bekommst.

dedlfix.