Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL事件调度器设置数据的过期日期,并在过期时自动更新_Php_Mysql - Fatal编程技术网

Php MySQL事件调度器设置数据的过期日期,并在过期时自动更新

Php MySQL事件调度器设置数据的过期日期,并在过期时自动更新,php,mysql,Php,Mysql,如何将MYSQL上的数据设置为到期日期?以及如何在过期日期从User1自动删除SILVER软件包,并自动更新为免费软件包 User2和GOLD软件包的问题与User1相同 例如: 我想这样设置白银和黄金包装的到期日期: SILVER Package for 1 Month (30 days) GOLD Package for 2 Months (60 days) User1在27/1/2559 16:20购买一个SILVER软件包,该软件包已在26/2/2016 16:20从User1中删

如何将MYSQL上的数据设置为到期日期?以及如何在过期日期从
User1
自动删除
SILVER
软件包,并自动更新为
免费
软件包

User2
GOLD
软件包的问题与
User1
相同

例如:

我想这样设置
白银
黄金
包装的到期日期:

SILVER Package for 1 Month (30 days)
GOLD   Package for 2 Months (60 days)
User1
27/1/2559 16:20
购买一个
SILVER
软件包,该软件包已在
26/2/2016 16:20从
User1
中删除,然后自动更新为
User1
免费软件包

User2
15/3/2559 16:20
购买一个
GOLD
套餐,该套餐已在
14/5/2016 16:20从
User2
中删除,然后自动更新为
User2
套餐

tbl_套餐

| id | name   |
---------------
| 1  | FREE   |
| 2  | SILVER |
| 3  | GOLD   |
tbl_成员

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


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

必须运行某些程序才能更改过期的软件包。虽然最有效的选择是每天或每小时运行的自动cron脚本,但您只需在用户每次登录站点时运行它即可。您希望修改过期日期在过去的
tbl_成员
的每一行的包。更改package列的值package本质上与“删除”它相同。此外,您希望将过期日期设置为null,因为免费软件包永远不会过期

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

UPDATE tbl_member SET package="Free",expire=null WHERE expire < now()
更新tbl_成员集package=“Free”,expire=null,其中expire
您可以创建一个cron jobs来执行此操作,它将每天检查以查找expried成员并更新它们。你可以在这里阅读

希望这对你有所帮助;如果有任何不合理的地方,请告诉我。它是自动删除并将其更改为免费软件包?更改为免费软件包,实际上就是删除银/金软件包。