gpt4 book ai didi

php - 如何在数据进入表后24小时自动从mysql表中删除数据行?

转载 作者:可可西里 更新时间:2023-11-01 08:09:41 25 4
gpt4 key购买 nike

例如,我有一个数据输入程序,我想在我输入这些数据 1 天后自动删除我的数据。我该怎么做?
有人可以用代码解释吗?

Create.php 将这些值发送到服务器

<form action="" method="post" enctype="multipart/form-data">
<input type="text" name="name_portofolio">
<textarea name="info_portofolio"></textarea>
<input type="file" accept="image/*" name="picture_portofolio">
<button type="submit" name="submit">Save</button>
</form>

函数-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;
}
} // create_data

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;

在那之后你可以crate event这将检查行创建时间。例如

CREATE EVENT recycling 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 ;

关于php - 如何在数据进入表后24小时自动从mysql表中删除数据行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44253746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com