2017-11-21 1 views
1

Ich habe ein PHP-Skript, das eine neue Bestellung erstellt und fügt die Zeit jetzt + 15 Minuten in die Datenbank ein.MySQL wählen wo timenow> Datenbankzeit

Nach Ablauf von 15 Minuten kann der Benutzer nicht auf die Bestellseite zugreifen.

Im Admin-Panel möchte ich nur Datensätze anzeigen, die nicht abgelaufen sind, also meine Frage ist, welche Select-Anweisung würde ich dazu verwenden, und welche wäre am effizientesten?

SELECT * FROM `orders` WHERE datenow > date 

Das "Datum" ist das Datum der Bestellung + 15 Minuten

P. S. Aternativ, gibt es eine Möglichkeit, dies mit PHP zu tun, so dass ich nicht zu viel Stress auf die Datenbank setzen muss?

Vielen Dank!

+0

Ich neige dazu, Bigints zu verwenden und Timestamps zu speichern, anstatt die Datetime-Funktionen der Datenbanken zu verwenden. Dies ermöglicht eine einfachere Lesbarkeit (für mich zumindest lol) und Manipulation durch timestamp (int). Da die Auswahl nach den Bereichen> und IncredibleHat

+0

Ich möchte nur wissen, was die SQL-Abfrage wäre, dies zu tun? Da meine Abfrage natürlich falsch ist – rakupu

+0

Sie sollten die Bestellungen in MySQL anstelle von PHP ausschließen, weil Sie möglicherweise 1000 abgelaufene Bestellungen in der Datenbank haben, aber nur 1 aktive - Sie wollen nicht 1001 Zeilen aus zurückgeben müssen MySQL einfach durchschleifen und das 1 in PHP greifen. (es sei denn, Sie reinigen diesen Tisch regelmäßig regelmäßig) – WOUNDEDStevenJones

Antwort

4

Vorausgesetzt, dass Sie Datensätze möchten, die noch nicht abgelaufen sind, möchten Sie alle Datensätze, in denen date größer als NOW() ist.

Wie die Kommentare erwähnt, ist es normalerweise besser, dies auf der Datenbankseite zu behandeln; Anstatt die Datenbank zu übertragen (vorausgesetzt, Sie haben Datenbank- und Webserver aufgeteilt), wird der gesamte Datensatz gefiltert, um ihn im Anwendungscode zu filtern. Der andere Vorteil, alle datetime-Funktionen auf demselben Server (in diesem Fall in der Datenbank) zu haben, liegt darin, dass insbesondere in einigen Shared Hosting-Umgebungen die Zeitzone für die Datenbank nicht geändert werden kann. Daher möchten Sie, dass die Zeitvergleiche in derselben Zeitzone stattfinden.

+1

Guter Punkt über die Zeitzone. Wenn PHP und MySQL nicht gleich eingestellt sind, kann es ernsthafte Kopfschmerzen verursachen;) – IncredibleHat

+0

PERFEKT, genau das, was ich gesucht habe, werde ich dies als Antwort wählen – rakupu

+0

Oh ... Und erzähl mir von den Kopfschmerzen von ihnen nicht in die gleiche Zeitzone, musste ich oft mit diesem Problem umgehen – rakupu