php - MySQL事件调度程序设置数据的过期日期并在过期时自动更新

标签 php mysql

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

User2GOLD 软件包与 User1 存在相同的问题。

举个例子:

我想为 SILVERGOLD 套餐设置过期日期,如下所示:

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

User127/1/2559 16:20购买SILVER套餐,该套餐已从User1<中删除 26/2/2016 16:20 然后自动更新到 User1FREE 软件包。

User215/3/2559 16:20 购买 GOLD 套餐,该套餐已从 User2< 中删除 14/5/2016 16:20 然后自动更新到 User2FREE 软件包。

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/

相关文章:

PHP 5.5 找不到 MySQLi 构造函数

php - DB2如何使用PDO指定连接字符集

php - Livesearch php 和 ajax

mysql - 如何获取有限制的升序记录列表的末尾?

php codeigniter插入查询

php - SSH2 我做错了什么?

php - 从自定义分类生成 WordPress 菜单

php - 更新数据库字段错误 CodeIgniter

php - 如何更改php代码以正确绑定(bind)参数以将多个实例插入mysql表

php - 为什么这个 PHP 代码不起作用?