0

可能重复:
要从 1 小时前选择的 Sql 查询?

我当前的 cron 作业脚本从数据库中删除所有行,如果用户想在 cronjob 运行时重置密码,我如何在将行添加到数据库时检查 mysql,这样只删除已经存在的行更多超过1小时?

我的 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);
4

1 回答 1

1

在您的数据库模式中,您必须添加一个新列来存储需求的时间(例如 ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)并在您的查询中添加一个 where 子句(WHERE ts < NOW()- INTERVAL 1 HOUR)

于 2012-12-06T02:03:17.890 回答