2012-11-21 27 views
1

首先,我1個月前開始使用PHP和數據庫等,但到目前爲止,我發現谷歌搜索通過問題大部分解決方案舊條目。PHP PDO刪除超過「X」(用戶定義)天所有的

我在做一個管理員功能,您可以刪除超過'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> 

錯誤消息:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DAYS)' at line 1' in /Applications/XAMPP/xamppfiles/htdocs/skiss/archive.php:10 Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/skiss/archive.php(10): PDOStatement->execute(Array) #1 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/skiss/archive.php on line 10

回答

2

DAYS需要是單數。

DATE_SUB(NOW(), INTERVAL :days DAY) 
+0

哇..大聲笑。是的,現在正在工作。有點尷尬:p謝謝:) – Amiga

+0

@ user1842128嘿,沒關係,很高興我可以幫忙;)你總是可以標記它是正確的,大聲笑 – wesside

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」。

+0

嘿,我已經解決了他的問題,他承認了它;) – wesside

相關問題