PHP PDO删除比“x”(用户定义)天数更旧的条目

时间:2012-11-21 13:59:03

标签: php mysql input pdo

首先,我从一个月前开始使用PHP和数据库,但到目前为止,我找到了解决大多数问题的解决方案。

我正在尝试创建一个管理功能,您可以删除超过“X”天的条目。 但是我很确定我的PDO出现了问题(日期部分)。

PHP:

$backsite = $_SERVER['PHP_SELF'];
if (isset($_POST['days'])) {
    $days = $_POST['days'];
    $statement = $db->prepare("DELETE FROM $tbl_name WHERE date < DATE_SUB(NOW(), INTERVAL :days DAYS)");
    $statement->execute(array(':days' => $days));
}

HTML:

<form method="post" action="' . $backsite .'">
    <input type="number" min="7" max="90" placeholder="7" required="" name="days"/>
    <input type="submit" name="delete" value="Delete" />
</form>

错误讯息:

  

致命错误:带有消息的未捕获异常'PDOException'   'SQLSTATE [42000]:语法错误或访问冲突:1064您有   SQL语法错误;查看与您的手册相对应的手册   MySQL服务器版本,用于在“DAYS”附近使用正确的语法   1'在/Applications/XAMPP/xamppfiles/htdocs/skiss/archive.php:10堆栈   跟踪:#0 /Applications/XAMPP/xamppfiles/htdocs/skiss/archive.php(10):   PDOStatement-&gt;执行(数组)#1 {main}抛出   第10行/Applications/XAMPP/xamppfiles/htdocs/skiss/archive.php

2 个答案:

答案 0 :(得分:2)

DAYS需要单数。

DATE_SUB(NOW(), INTERVAL :days DAY)

答案 1 :(得分:0)

$backsite = $_SERVER['PHP_SELF'];
if (isset($_POST['days'])) {
    $days = $_POST['days'];
   $statement = $db->prepare("[DELETE FROM $tbl_name WHERE date < DATE_SUB(NOW(), INTERVAL :days DAY)](dev.mysql.com/doc/en/date-and-time-functions.html)");
   $statement->execute(array(':days' => $days));
}

您的SQL语句中有一个额外的“S”。