0

毎月 SQL テーブルのレコードを自動削除する方法を教えてください。例: 3 つの列があります。日付、名前、住所。したがって、そのテーブルに毎日エントリすると、テーブルに格納されます。これらのレコードをすべて削除して別のテーブルに保存し、毎月空にする必要があります。

4

1 に答える 1

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
    }
?> 
于 2012-09-17T13:34:42.643 に答える