1

まず、PHP とデータベースを 1 か月前に始めましたが、これまでのところ、ほとんどの問題はググって解決策を見つけました。

「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 構文にエラーがあります。/Applications/XAMPP/xamppfiles/htdocs/skiss/archive.php:10 スタック トレース: #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

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 に答える