2012-09-17 73 views
0

如何使自動刪除每月的SQL表記錄。例如:我們有3列。日期,姓名和地址。所以每天進入該表時,它都存儲在表中。我需要刪除保存在另一個表中的所有這些記錄,並在每個月將其清空。自動刪除sql表

+0

創建活動。 – hjpotter92

+0

cron job是答案 – Surace

+0

創建'cron'作業。 –

回答

1

您需要設置爲一個cronjob,例如:

#this will run every 1'st of the month at 00:00 AM 
0 0 1 * * /usr/bin/php -f /path/to/script.php 

script.php

<?php 
    $db = new PDO('mysql:host=localhost;dbname=testdb;charset=UTF-8', 'username', 'password', array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 

    $monthYear = date('mY', strtotime('-1 day')); // last month 
    $table = 'addresses'; // current table name 
    $newTable = $table.'_'.$monthYear; // new table name oldTable_monthYear 

    try { 
     $db->beginTransaction(); 
     $query = $db->query("CREATE TABLE `".$newTable ."` LIKE `".$table ."`"); // create new table like old one 
     $query = $db->query("INSERT INTO `".$newTable ."` SELECT * FROM `".$table ."`"); // insert values in new table 
     $query = $db->query("TRUNCATE TABLE `".$table ."`"); // truncate old table 
    } catch(PDOException $ex) { 
     $db->rollBack(); // something went wrong, rollback all actions 
     echo $ex->getMessage(); // output error 
    } 
?>