PHP MySQL删除超过1分钟的行

时间:2015-04-02 23:25:53

标签: php mysql

很抱歉这篇帖子有很多答案,但我正在转动我的想法。非常简单:删除超过1分钟的所有记录:

function deleteExpiredKeys ($link) {

    $date = date("Y-m-d H:i:s");
    $time = strtotime($date);
    $time = $time - (60);
    $date = date("Y-m-d H:i:s", $time);

    $sql = 'DELETE from Session_Keys
            WHERE updated_at < ' . $date;

    $result = mysqli_query($link, $sql);

    if (!$result) return false;

    return true;
}

'updated_at'是datetime字段。

这不会抛出任何错误,但它也不会删除任何错误。我尝试了很多不同的东西,其中大多数都比我在这里发布的更优雅,但没有任何效果。谁能帮我?谢谢。

2 个答案:

答案 0 :(得分:1)

您无需在PHP中创建时间。 MySQL能够自己进行时间计算。

DELETE from Session_Keys
WHERE updated_at < NOW() - INTERVAL 1 MINUTE

答案 1 :(得分:0)

在与日期/日期时间进行比较时,MySQL会默默地将格式正确的字符串转换为日期。您的代码不会将日期作为字符串发送,而是作为一系列字符发送(字符串需要用引号分隔)。

试试这个:

function deleteExpiredKeys ($link) {

$date = date("Y-m-d H:i:s", strtotime('1 minute ago'));

$sql = 'DELETE from Session_Keys
        WHERE updated_at < ?';

$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param($stmt, 's', $date);
$result = mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);

if (!$result) return false;

return true;

}

它使用了红外线声明,这是最佳做法。