MYSQL+;PHP每天制作一个sql执行器

MYSQL+;PHP每天制作一个sql执行器,php,mysql,Php,Mysql,我希望为访问特定页面的用户执行每日SQL。然而,我只希望这种情况发生一次,每24小时与特定的用户 (我使用cookies吗?我使用什么SQL查询?PHP代码是什么?) 我的桌子是这样的: 我想执行一个类似于以下内容的mysql查询: INSERT INTO `user_badges` VALUES ('1', 'ADM', '0'); 如上所述,我希望为每天访问PHP页面一次的用户执行此操作。谢谢。创建如下表格: CREATE TABLE badge_update_time ( us

我希望为访问特定页面的用户执行每日SQL。然而,我只希望这种情况发生一次,每24小时与特定的用户

(我使用cookies吗?我使用什么SQL查询?PHP代码是什么?)

我的桌子是这样的:

我想执行一个类似于以下内容的mysql查询:

INSERT INTO `user_badges` VALUES ('1', 'ADM', '0');

如上所述,我希望为每天访问PHP页面一次的用户执行此操作。谢谢。

创建如下表格:

CREATE TABLE badge_update_time (
    user_id INT(11) PRIMARY KEY,
    last_updated DATETIME
);
然后,将插入到
user\u-badges
表中的脚本将首先执行如下查询:

SELECT COUNT(*) AS count
FROM badge_update_time
WHERE user_id = 1 AND last_updated > DATE_SUB(NOW(), INTERVAL 1 DAY)
如果表中没有该用户的行,或者该行超过1天,则返回
count==0
。因此,您的代码可以:

if ($row['count'] == 0) {
    mysqli_execute($conn, "INSERT INTO badge_update_time VALUES (1, NOW()) ON DUPLICATE KEY UPDATE last_updated = NOW()";
    mysqli_execute($conn, "INSERT INTO `user_badges` VALUES ('1', 'ADM', '0')");
}

一种可能是使用MySQL的事件调度器

在应用程序的
用户
表中添加一列,如

been_there  BOOLEAN NOT NULL DEFAULT FALSE
当用户访问相关页面时

$stmt = $dbh->prepare("UPDATE users
                         SET been_there = TRUE
                         WHERE user_id = :user_id");
$stmt->execute(array(":user_id" => $user_id));
$event = "CREATE EVENT reset_" . $user_id . " IF NOT EXISTS
            ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 24 HOUR
            DO
              UPDATE users SET been_there = FALSE WHERE user_id = " . $user_id;
$dbh->exec($event);
(请注意,我通常不赞成使用动态SQL,但是在本例中,我不确定是否还有其他方法,并且我假设
$user\u id
已被正确清理。)

cron
相比,它的最大优势在于它将数据库的计划更新置于数据库本身的控制之下,因此它们不太可能由于数据库之外的情况而失败


我还没有测试过语法是否正确,我将错误处理留给读者作为练习。

有一个表,其中包含每个用户上次执行查询的时间。你的服务器应该检查这个表,看看它是否已经至少24小时了,否则跳过SQL。你需要使用cron作业。有人有任何PHP代码可以帮助你完成这项工作吗。我真的很差劲。没有PHP,你可以通过将stdin从文件重定向到mysql命令行工具来实现这一点。mysql db_nameoutput.tab我希望它在PHP中,这样我就可以回显一条消息,告诉人们他们收到了一些东西。[Err]1064-您的sql语法有错误;查看与您的MySQL服务器版本对应的手册,了解在第2行“主键,上次更新的日期时间”附近使用的正确语法。对不起,我遗漏了数据类型。现在已修复。我的php有问题,不断出现错误500。如果出现错误500,php日志中应该会有错误。您介意将第一个和第二个查询放入其中吗?如果这是可行的,但是,我想要它,所以我会收到一个PHP反馈,告诉特定用户他们已经收到了带有回音的东西。相对于用户访问页面的时间,您希望何时发送消息?