<?php
$username = $_SESSION['username'];
include('dbcon.php');
if (isset($_POST['req'])) {
$query = "SELECT requested FROM users WHERE username='$username' ";
$result = mysqli_query($db, $query);
$row = mysqli_fetch_array($result);
if(empty($row['requested'])) {
$request = mysqli_real_escape_string($db, $_POST['request']);
$query = "INSERT INTO requests (username, airid)
VALUES('$username', '$request')";
mysqli_query($db, $query);
$query2 = "UPDATE users SET requested='1' WHERE username='$username'";
mysqli_query($db, $query2);
// timer should go here i guess
echo '<script>swal({title: "Great!", text: "We will process your request as soon as possible!", type: "success", buttonsStyling: false, heightAuto: false}).then(function(){ location.reload();});</script';
} else {
echo '<script>swal({title: "Whoa!", text: "You must wait 48 hours before requesting again!", type: "error", buttonsStyling: false, heightAuto: false}).then(function(){ location.reload();});</script';
}
}
?>
在将用户请求的值设置为“ 1”后如何设置计时器,因此在24小时后,他的请求将不是“ 1”而是“'再次为空
抱歉,我的英语水平不佳
答案 0 :(得分:0)
请考虑以下内容,该内容使用分钟而不是一天作为约束单位:
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id SERIAL PRIMARY KEY
,user_id INT NOT NULL
,dt DATETIME NOT NULL
);
INSERT INTO my_table (user_id,dt) VALUES (101,NOW());
Query OK, 1 row affected (0.00 sec)
SELECT * FROM my_table;
+----+---------+---------------------+
| id | user_id | dt |
+----+---------+---------------------+
| 1 | 101 | 2018-10-07 23:21:44 |
+----+---------+---------------------+
1 row in set (0.00 sec)
...大约一分钟后...
INSERT INTO my_table (user_id,dt)
SELECT 101,NOW()
FROM (SELECT 1) x
LEFT
JOIN my_table y
ON y.user_id = 101
AND y.dt >= NOW() - INTERVAL 60 SECOND
WHERE y.id IS NULL;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
SELECT * FROM my_table;
+----+---------+---------------------+
| id | user_id | dt |
+----+---------+---------------------+
| 1 | 101 | 2018-10-07 23:21:44 |
| 2 | 101 | 2018-10-07 23:23:39 |
+----+---------+---------------------+
2 rows in set (0.00 sec)
...几秒钟后...
INSERT INTO my_table (user_id,dt)
SELECT 101,NOW()
FROM (SELECT 1) x
LEFT
JOIN my_table y
ON y.user_id = 101
AND y.dt >= NOW() - INTERVAL 60 SECOND
WHERE y.id IS NULL;
Query OK, 0 rows affected (0.00 sec)
SELECT * FROM my_table;
+----+---------+---------------------+
| id | user_id | dt |
+----+---------+---------------------+
| 1 | 101 | 2018-10-07 23:21:44 |
| 2 | 101 | 2018-10-07 23:23:39 |
+----+---------+---------------------+
2 rows in set (0.00 sec)