MySQL事件调度程序设置数据的到期日期,如果已过期则自动更新

时间:2016-01-28 02:14:08

标签: php mysql

如何将MYSQL上的数据设置为截止日期?以及如何在过期日期自动从SILVER删除User1个包并自动更新为FREE个包。

User2GOLD包与User1具有相同的问题。

举个例子:

我想设置SILVERGOLD包的到期日期,如下所示:

SILVER Package for 1 Month (30 days)
GOLD   Package for 2 Months (60 days)

User1SILVER上购买27/1/2559 16:20个套餐,此套餐已从User1 26/2/2016 16:20移除,然后自动更新至FREE套餐User1

User2GOLD上购买15/3/2559 16:20个套餐,此套餐已从User2 14/5/2016 16:20移除,然后自动更新至FREE套餐User2

tbl_package

| id | name   |
---------------
| 1  | FREE   |
| 2  | SILVER |
| 3  | GOLD   |

TBL_MEMBER表

| id | name  | package |
------------------------
| 1  | User1 | SILVER  |
| 2  | User2 | GOLD    |
| 3  | User3 | Free    |

2 个答案:

答案 0 :(得分:1)

首先,将时间戳列添加到tbl_member,例如到期日期。设置列,使其默认为null。当用户升级时,请在PHP代码中更新此新列。

必须运行才能更改过期的包。虽然最有效的选项是每天或每小时运行的自动cron脚本,但您可以在每次用户登录站点时运行它。您想要修改过去有过期日期的tbl_member每行的包。更改包列的值包与"删除"基本相同。它。此外,您希望将过期日期设置为null,因为免费软件包永不过期。

例如,如果过期日期已过去,则此SQL应将任何成员降级为免费包:

UPDATE tbl_member SET package="Free",expire=null WHERE expire < now()

答案 1 :(得分:1)

您可以创建 cron作业来执行此操作,它会每天检查以查找已过期的成员并更新它们。你可以在这里阅读http://goo.gl/VJIHkE