Как автоматически удалить строки данных из таблицы mysql через 24 часа после ввода данных в таблицу?

Например, у меня есть программа ввода данных. И я хочу автоматически удалить свои данные после 1 дня ввода этих данных. как я это делаю?
Кто-то может объяснить в коде?

create.php

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <?php require_once "db.php"; require_once "function-add.php"; if( isset($_POST['submit']) ){ $name_portofolio = $_POST['name_portofolio']; $info_portofolio = $_POST['info_portofolio']; $picture_portofolio = $_FILES['picture_portofolio']; $tipe_file = $_FILES['picture_portofolio'] ['type']; $tmp_file = $_FILES['picture_portofolio']['tmp_name']; $ukuran_file = $_FILES['picture_portofolio'] ['size']; if(!empty(trim($name_portofolio)) && !empty(trim($info_portofolio)) ) { if(!empty($_FILES['picture_portofolio']['tmp_name']) ){ if($tipe_file === "image/jpeg" || $tipe_file === "image/png" || $tipe_file === "image/jpg" ){ if($ukuran_file <= 4000000){ if(create_data($name_portofolio, $info_portofolio, $picture_portofolio)) { echo "success upload portofolio"; }else{ echo "fail upload portofolio"; } }else{ echo "max file 1.5 mb"; } }else{ echo "only.jpeg, .jpg"; } }else{ echo "try again "; } }else{ echo 'try again'; } } ?> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <table> <tr> <td>name portofolio</td> <td>:</td> <td><input type="text" name="name_portofolio"></td> </tr> <tr> <td>Info portofolio</td> <td>:</td> <td><textarea name="info_portofolio"></textarea></td> </tr> <tr> <td>picture portofolio</td> <td>:</td> <td><input type="file" accept="image/*" name="picture_portofolio"></td> </tr> <tr> <td></td> <td></td> <td><button type="submit" name="submit">Save</button></td> </tr> </table> </form> </body> </html> 

Функция-add.php

 <?php function create_data($name_portofolio, $info_portofolio, $picture_portofolio){ global $connect; $name_portofolio = mysqli_real_escape_string($connect, $name_portofolio); $info_portofolio = mysqli_real_escape_string($connect, $info_portofolio); $filePath = "picture/".basename($picture_portofolio["name"]); move_uploaded_file($picture_portofolio["tmp_name"], $filePath); $query = "INSERT INTO portofolio (name_portofolio, info_portofolio, picture_portofolio) VALUES ('$name_portofolio', '$info_portofolio', '$filePath')"; if( mysqli_query($connect, $query) ){ return true; }else{ return false; } } 

db.php

 <?php $host = "127.0.0.1"; $user = "root"; $password = ""; $db = "wherco"; // create connection $connect = new mysqli($host, $user, $password, $db); // check connection if($connect->connect_error) { die("connection failed : " . $connect->connect_error); } else { // echo "Successfully Connected"; } ?> 

Благодарю .

Попробуйте использовать обычные события. Чтобы начать работу, включите Планировщик событий, используя

 SET GLOBAL event_scheduler = ON; 

После этого вы можете заполнить событие , которое проверит время создания строк. Например

 CREATE EVENT utitization ON SCHEDULE EVERY 1 HOUR ENABLE DO DELETE FROM MyTable WHERE `timestamp_column` < CURRENT_TIMESTAMP - INTERVAL 24 HOUR; 

Если в вашей таблице нет столбца с меткой времени создания строки, вы можете создать триггер, который вставляет текущую временную метку и вставил идентификатор строки в вспомогательную таблицу.

 CREATE TRIGGER logCreator AFTER INSERT ON MainTable FOR EACH ROW INSERT INTO LogTable (MainID, Created) VALUES(NEW.id, CURRENT_TIMESTAMP); 

Затем вы можете использовать этот журнал для получения ключей основной таблицы, которые были созданы до определенного времени.

 delimiter | CREATE EVENT cleaner ON SCHEDULE EVERY 1 HOUR ENABLE DO BEGIN DECLARE MaxTime TIMESTAMP; SET MaxTime = CURRENT_TIMESTAMP - INTERVAL 24 HOUR; DELETE FROM MainTable WHERE id IN (SELECT MainID FROM LogTable WHERE Created < MaxTime); DELETE FROM LogTable WHERE LogTable.Created < MaxTime; END | delimiter ; 

В вашей таблице «portofolio» добавить столбец created_at (datetime). Затем в задании Cron проверьте текущее время datetimeвыше created_at (datetime) с 24 часами и удалите записи по запросу mysql, например

 DELETE FROM portofolio WHERE created_at<=DATE_SUB(NOW(), INTERVAL 1 DAY) 

И запускайте файл задания cron каждую минуту