mysql在1个月后自动将数据库表中的状态从0更改为3

tf7tbtn2  于 2021-06-15  发布在  Mysql
关注(0)|答案(3)|浏览(290)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

两年前关门了。
改进这个问题
我试图在我的网站上添加一个新的功能,即我想固定的时间限制为1个月,然后到期,这意味着 the status of that user will change from 0 to 3. 我的表中有很多字段,包括
身份证件
状态
今天是你的约会。
其中,today\u date存储注册的时间和日期,默认状态为0。
使用php-mysql可以吗?如果可能的话,请帮帮我。提前谢谢。

jgzswidk

jgzswidk1#

cron job是最好的解决方案。以为你不想在气球上贴大提琴带。
如果您想按照以下步骤操作:
创建一个php脚本并保存在一个文件中,例如mycron.php
如果您使用带有centos的linux服务器创建带有bash的调度程序脚本,那么如何在没有交互式编辑器的情况下使用bash自动创建cron作业?
如果有cpanel转到cron作业,请设置要运行的文件路径和时间。

z4bn682m

z4bn682m2#

你应该采取另一种方法来实现这一点。
您在db right中已经有注册日期,因此当用户在登录表单中输入有效凭据时,请将当前日期与注册日期进行比较,如果相差超过30天,则更新 status 带的列 0 同时也不允许该用户进入。
如何在php中计算两个日期之间的天数:

$now = time(); // or your date as well
$your_date = strtotime("2010-01-01");
$datediff = $now - $your_date;

echo round($datediff / (60 * 60 * 24));  // This will be number of days. Store it in a variable and set a condition on it.
9w11ddsr

9w11ddsr3#

如果您有一个页面来处理登录post数据,那么构建sql查询以获取包含用户注册时间的列。采取 $time_of_reg 作为用户的注册时间。无论您使用什么时间戳,请使用 strtotime() 功能。
现在用户的注册时间增加了30天 $time_of_reg_plus_30 = strtotime('+30 Days',$time_of_reg) 现在,如果当前时间大于或等于30天+用户注册时间,则使用if条件执行更新查询。这样您就可以对您的数据库执行更新查询 status 列,仅当用户已注册30天或以上时。

if(time()>=$time_of_reg_plus_30)
{ //perform sql update query}

(在unix时间戳中包含这些值,使比较更容易)

<?//perform sql query to fetch user's time of registration, '$time_of_reg' in this case.

 $time_of_reg = strtotime($time_of_reg);  //Convert to UNIX timestamp
 $time_of_reg_plus_30 = strtotime('+30 Days',$time_of_reg); // Add 30 Days To Registration Time

if(time()>=$time_of_reg_plus_30)
{ //perform sql update query if user has been registered for 30 Days or More
}

请记住将其放置在处理登录日志数据的页面中,这是一种不用cron作业就可以实现目标的好方法,因为每当用户尝试登录时,用户的状态都会更新。

相关问题