1

首先,我在 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 中抛出

4

2 回答 2

2

DAYS必须是单数。

DATE_SUB(NOW(), INTERVAL :days DAY)
于 2012-11-21T14:01:42.300 回答
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”。

于 2012-11-21T14:09:52.543 回答