为了账号安全,请及时绑定邮箱和手机立即绑定

使用 cronJob 创建 PHP 记录数据库,并使用 SQL 通过每晚向右移动值来更新数据库

使用 cronJob 创建 PHP 记录数据库,并使用 SQL 通过每晚向右移动值来更新数据库

PHP
LEATH 2024-01-19 10:20:24
我在询问有关如何每午夜运行 PHP 脚本的先前问题后尝试运行 CronJob PHP 脚本。从那时起,我就被一个看似微不足道的问题所困扰。我读过几篇关于从数据库获取行、回显值等的文章,并且已经实现了代码。但似乎它们并不完全适合运行 php 文件。所以这是代码<?php$connection = mysqli_connect('localhost', 'root', '', 'pointsmanager');$before0d = "SELECT * FROM points WHERE today_points";$before1d = "SELECT * FROM points_history WHERE 1d_before";$before2d = "SELECT * FROM points_history WHERE 2d_before";$before3d = "SELECT * FROM points_history WHERE 3d_before";$before4d = "SELECT * FROM points_history WHERE 4d_before";$before5d = "SELECT * FROM points_history WHERE 5d_before";$before6d = "SELECT * FROM points_history WHERE 6d_before";$before7d = "SELECT * FROM points_history WHERE 6d_before";UPDATE points_historySET 1d_before = $before0d, 2d_before = $before1d, 3d_before = $before2d, 4d_before = $before3d, 5d_before = $before4d, 6d_before = $before5d, 7d_before = $before6d,WHERE condition;?>这就是我想做的。我想创建用户每天获得的积分的历史记录。在一个数据库中,我希望它选择一个名为 Today_points 的列并将其存储在变量中:然后,我希望它将数据库中一周的每个值存储在一个变量中。最后,通过将所有当前值向右移动来更新points_history并从另一个名为“points”的数据库获取名为“today_points”的列的值并将其放入“1d_before”中(因此,每个午夜,所有值都向右移动一位,而“todays point”现在是前一天)可以有人告诉我如何用 PHP 做到这一点。老实说,我已经尽了最大努力做了上面的片段。但这不起作用。任何人向我展示类似的代码将不胜感激。谢谢!
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您需要规范化表以将值存储在单独的行而不是列中。但是,如果您需要一个关于如何在现有结构中执行此操作的解决方案,那么这里是查询,


UPDATE points_history 

SET

    7d_before = 6d_before,

    6d_before = 5d_before,

    5d_before = 4d_before,

    4d_before = 3d_before,

    3d_before = 2d_before,

    2d_before = 1d_before,

    1d_before = (

        SELECT 

            today_points

        FROM

            points

        WHERE

            user_id = '123'

        )

WHERE

    user_id = '123';

假设您要更新用户 ID“123”。为了将值向右移动,我们首先将第 6 天的值复制到第 7 天,然后将第 5 天复制到第 6 天,然后将第 4 天复制到第 5 天,依此类推。最后,我们将从today_points表中选择来更新第一天的值。

这是工作小提琴


查看完整回答
反对 回复 2024-01-19
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信