Php 24小时后更新指定的用户行

Php 24小时后更新指定的用户行,php,mysql,Php,Mysql,我想创建一个活动(就我的研究而言,它是合适的)。我想更新特定用户的特定行。 例如 我有一个默认值为50硬币的用户。 我需要一个逻辑来知道如何在24小时后更新50到60。我试着自己登录,但我在很多事情上都遇到了麻烦,比如我如何比较用户的日期和时间,检查是否是24小时。如何在CREATE事件中添加WHERE条件。 我的代码 $user\u table=$username'_msgs′; $\会话['username']=$username; $name=$\会话['username']; mysql

我想创建一个活动(就我的研究而言,它是合适的)。我想更新特定用户的特定行。 例如 我有一个默认值为50硬币的用户。 我需要一个逻辑来知道如何在24小时后更新50到60。我试着自己登录,但我在很多事情上都遇到了麻烦,比如我如何比较用户的日期和时间,检查是否是24小时。如何在CREATE事件中添加WHERE条件。 我的代码

$user\u table=$username'_msgs′;
$\会话['username']=$username;
$name=$\会话['username'];
mysqli_query($con,“插入用户(用户名、密码、在线、个人资料、状态、bio、b_币)值('$username'、'$password'、'0'、'N/A'、'N/A'、'N/A'、'10');
mysqli_查询($con,“创建事件myevent
按计划以当前时间戳+间隔1分钟
做
更新用户集b_coin=b_coin+1,其中用户名=“$name”);
回声'
注册!点击这里!
';

在我看来,你的问题看起来有点让人困惑。你想每24小时更新所有注册玩家的硬币吗?如果是这样,我可以想出两种方法:

  • 数据库事件:您可以创建一个每24小时运行一次的数据库事件,并向系统中的每个注册玩家添加10枚硬币。为此,您不需要在播放器注册时执行此操作,您可以直接在数据库中执行此操作
  • 参考链接:

  • PHP脚本:您可以创建一个PHP脚本,用于执行查询以更新所有用户。因此,在您考虑运行应用程序的服务器中,您可以将crontab配置为每24小时运行一次,并为您执行更新
  • 参考链接:


    在我个人看来,我会选择1st解决方案,这听起来对此类问题更有意义。

    @JasonK我必须在登录表单中输入代码吗?例如,如果用户登录,那么将创建事件?为什么不选择表中的任何内容呢?查询表时只需计算硬币。您的sql将位于DO部分。从你想要的任何地方呼叫它。@JasonK,这样我就不必与用户当前的日期和时间进行比较了?我真的无法为你回答这些问题。你需要想一想什么时候事情会发生。谢谢!但是我仍然对添加WHERE条件感到困惑基本上,您已经有了WHERE条件以您需要的方式工作。带有查询的事件,您必须运行创建事件。。。查询以在数据库中而不是在代码中创建事件(不确定是否清楚)。因此,使用查询更新用户设置coin=coin+10;对你来说应该很好。现在,您只需要了解如何创建每24小时运行一次的数据库事件(或者任何其他对应用程序有意义的时间)。对于数据库事件引用,我要看一下这个问题,对我来说非常清楚。如果您需要任何其他帮助,请告诉我。问题参考:
    $user_table = $username . '_msgs';
    $_SESSION['username'] = $username;
    $name = $_SESSION['username'];
    mysqli_query($con, "INSERT INTO users(username,password,online,profile,status,bio,b_coin)VALUES('$username','$password','0','N/A','N/A','N/A','10')");
        mysqli_query($con, "CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
    DO
      UPDATE users SET b_coin = b_coin + 1 WHERE username='$name'");    
                echo '<div class="alert alert-success" role="alert">
           <a href="../login" class="alert-link" style="text-align:center;">Registered! Click Here!
        </div>';