繁体   English   中英

PHP PDO 删除早于“x”(用户定义)天的条目

[英]PHP PDO Delete older entries than 'x' (user defined) days

首先,我从 1 个月前开始使用 PHP 和数据库,但到目前为止,我通过谷歌搜索找到了大部分问题的解决方案。

我正在尝试创建一个管理功能,您可以在其中删除早于“X”天的条目。 但我很确定我的 PDO(:day 部分)有问题。

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 服务器版本相对应的手册,以获取在 /Applications/XAMPP/xamppfiles/htdocs/skiss/archive.php:10 中的第 1 行的“DAYS)”附近使用的正确语法:#0 /Applications/ XAMPP/xamppfiles/htdocs/skiss/archive.php(10): PDOStatement->execute(Array) #1 {main} 在第 10 行的 /Applications/XAMPP/xamppfiles/htdocs/skiss/archive.php 中抛出

DAYS必须是单数。

DATE_SUB(NOW(), INTERVAL :days DAY)
$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”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM