如何将 MYSQL 上的数据设置为到期日期?以及如何在过期日期自动从User1
中删除SILVER
包并自动更新到FREE
包。
User2
和GOLD
包与User1
有相同的问题。
举个例子:
我想为SILVER
设置到期日期,并像这样GOLD
软件包:
SILVER Package for 1 Month (30 days)
GOLD Package for 2 Months (60 days)
User1
27/1/2559 16:20
上购买SILVER
软件包,并且该软件包已从User1
中删除,26/2/2016 16:20
然后自动更新到FREE
软件包以进行User1
。
User2
15/3/2559 16:20
上购买GOLD
软件包,并且该软件包已从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 |
首先,将时间戳列添加到tbl_member
,例如到期日期。将列设置为默认为 null。当用户升级时,请在 PHP 代码中更新此新列。
必须运行某些内容才能更改过期的软件包。虽然最有效的选项是每天或每小时运行的自动 cron 脚本,但您可以在每次用户登录站点时简单地运行它。您希望修改过去过期日期的每一行tbl_member
的包。更改包列的值包本质上与"删除"它相同。此外,您希望将过期日期设置为 null,因为免费包永不过期。
例如,如果过期日期是过去的,则此 SQL 应将所有成员降级到 Free 包:
UPDATE tbl_member SET package="Free",expire=null WHERE expire < now()
您可以创建一个 cron 作业来执行此操作,它将每天检查以查找过期成员并更新它们。你可以在这里阅读 http://goo.gl/VJIHkE