php - 一段时间后如何更改php mysql数据库中的值?
问题描述
我正在一个在 php mysql 中有数据库的市场网站上工作。在网站上,我想在 3 天后将用户下的订单标记为完成。任何订单的状态值都应在 3 天后更改为完成。数据库中的订单状态应在 3 天后自动更改。有没有办法实现这样的目标?
有没有办法实现这样的目标?
解决方案
首先,您需要一个可以进行更新的查询,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;
推荐阅读
- arrays - 为什么数组吞下的元素多于其容量?
- random - 为什么这个 rand use 语句在 rust 中起作用?
- node.js - UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“缓冲区”
- css - 如何在保持精确的 div 比率的同时阻止文本溢出到另一个 div?
- angular - 如何在 TypeScript 中正确使用 GeolocationPosition?
- html - 使用 BeautifulSoup 抓取非内联样式的 html 元素的 css 属性
- python - 类型错误:只能将 str(不是“float”)连接到 str
- r - 如何在 sparklyr 包中运行 FPGrowth
- python - 我无法显示 Django 表单
- jquery - jQuery validate submitHandler 不会触发