如何将MYSQL上的数据设置为截止日期?以及如何在过期日期自动从SILVER
删除User1
个包并自动更新为FREE
个包。
User2
和GOLD
包与User1
具有相同的问题。
举个例子:
我想设置SILVER
和GOLD
包的到期日期,如下所示:
SILVER Package for 1 Month (30 days)
GOLD Package for 2 Months (60 days)
User1
在SILVER
上购买27/1/2559 16:20
个套餐,此套餐已从User1
26/2/2016 16:20
移除,然后自动更新至FREE
套餐User1
。
User2
在GOLD
上购买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 |
答案 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