如何将 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
然后自动更新到 User1
的 FREE
软件包。
User2
于 15/3/2559 16:20
购买 GOLD
套餐,该套餐已从 User2< 中删除
14/5/2016 16:20
然后自动更新到 User2
的 FREE
软件包。
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
添加时间戳列,例如到期日期。设置该列,使其默认为空。当用户升级时,请更新 PHP 代码中的这个新列。
必须运行某些程序才能更改过期的包。虽然最有效的选项是每天或每小时运行的自动 cron 脚本,但您只需在每次用户登录站点时运行它即可。您想要修改过期日期已过去的每一行 tbl_member
的包。更改套餐列的超值套餐本质上与“删除”它相同。此外,您希望将过期日期设置为空,因为免费包永远不会过期。
例如,如果过期日期已过,此 SQL 应将所有成员(member)降级为免费套餐:
UPDATE tbl_member SET package="Free",expire=null WHERE expire < now()
关于php - MySQL事件调度程序设置数据的过期日期并在过期时自动更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35051713/