PHP + MySql Cron作业,删除超过1小时的行

时间:2012-12-06 01:52:20

标签: php mysql cron

  

可能重复:
  Sql query to select from 1 hour ago?

我当前的cron作业脚本从数据库中删除所有行,如果用户想要在cronjob运行时重置密码,这是不好的,当行添加到数据库时我如何检查mysql,这样就只删除了在那里待了一个多小时?

我的cron_reset.php

<?php
require_once('mysql_config.php');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) 
{
    die('Failed to connect to server: ' . mysql_error());
}

$db = mysql_select_db(DB_DATABASE);
if(!$db) 
{
    die("Unable to select database");
}


function clean($str) 
{
    $str = @trim($str);
    if(get_magic_quotes_gpc()) 
    {
        $str = stripslashes($str);
    }
    return mysql_real_escape_string($str);
}

$password = clean($_GET['password']);
if($password != $cron_password)
{
    die('Access Denied');
}
else
{
    $qry = "DELETE FROM cron_reset";
    $result = mysql_query($qry);
    if($result) 
    {
        die('Success');
    }
    else 
    {
        die(mysql_error());
    }
}
?>

这是将电子邮件+重置代码添加到数据库

的行
            $qry = "INSERT INTO cron_reset(email, code) VALUES('$email','$code')";
            $result = @mysql_query($qry);

1 个答案:

答案 0 :(得分:1)

在数据库架构中,您必须添加一个新列来存储需求的时间(例如,ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)并在查询中添加where子句(WHERE ts&lt; NOW() - 间隔1小时)