首页 > 解决方案 > 一段时间后如何更改php mysql数据库中的值?

问题描述

我正在一个在 php mysql 中有数据库的市场网站上工作。在网站上,我想在 3 天后将用户下的订单标记为完成。任何订单的状态值都应在 3 天后更改为完成。数据库中的订单状态应在 3 天后自动更改。有没有办法实现这样的目标?

有没有办法实现这样的目标?

标签: phpmysqlsqldatabase

解决方案


首先,您需要一个可以进行更新的查询,3 天或更长时间且状态不同'complete'

UPDATE `order`
SET `order`.`status` = 'complete'
WHERE `order`.`status` <> 'complete'
AND TIMESTAMPDIFF('DAY', `order`.`date`, now()) >= 3;

现在,您可以使用事件安排此查询每天执行

CREATE EVENT IF NOT EXISTS `update_status_event`
ON SCHEDULE
    EVERY 19 DAY_HOUR
    COMMENT 'Update the status every days at 19:00'
    DO
        UPDATE `order`
        SET `order`.`status` = 'complete'
        WHERE `order`.`status` <> 'complete'
        AND TIMESTAMPDIFF('DAY', `order`.`date`, now()) >= 3;

推荐阅读