我在数据库的我的bonusdetails表中添加了一些红利代码行。所有奖励代码都有到期日。
是否可以通过php自动删除其到期日期已到达的行?代码I使用的是(有效期是日期): -
$query = "select *
from bonusdetails
where BonusType='Match Bonus'
order by Validity ASC limit 0,30;";
$result = mysql_query($query);
echo '<table>';
.....
.....
.....
echo '</table>';
?>
答案 0 :(得分:4)
您可以尝试使用MySQL事件:
CREATE EVENT IF NOT EXISTS `dbName`.`eventName`
ON SCHEDULE
EVERY 1 DAY // or 1 HOUR
COMMENT 'Description'
DO
BEGIN
DELETE FROM `dbName`.`TableName` WHERE `expireDateCol` < NOW();
END
请注意,您的服务器上需要启用MySQL事件调度程序:
SET GLOBAL event_scheduler = ON;
答案 1 :(得分:0)
您可以创建Trigger
,每当有人更新您的数据时,该DELIMITER $$
Create Trigger trigger_name
AFTER UPDATE ON bonusdetails
FOR EACH ROW BEGIN
DELETE bonusdetails
WHERE Validity > Now();
END$$
DELIMITER ;
都会删除您的记录。
{{1}}
答案 2 :(得分:0)
此查询将删除Validity
中的日期已过去的行。
$query = "DELETE FROM bonusdetails
WHERE BonusType = 'Match Bonus'
AND Validity < '".date('Y-m-d', time())."'";
如果Validity
为DATETIME
:
$query = "DELETE FROM bonusdetails
WHERE BonusType = 'Match Bonus'
AND Validity < '".date('Y-m-d H:i:s', time())."'";
之后:
答案 3 :(得分:0)
$conn = new mysqli($servername,$username,$password,$dbname);
$query = "DELETE FROM Urls WHERE created_at < now()";
$conn->query($query);
这可能会有所帮助