0

2 つのテーブルがprojectsありarchive、同じ列があります。archiveご理解のとおり、特定の条件下でプロジェクトをテーブルにアーカイブする必要があります。

2つのリクエストを書きましたが、別々に実行すると問題なく動作しますが、まとめたいと思います。

$sql = "INSERT INTO archive (idDocument,documentNumber,submissionDate,projectName)
        SELECT idDocument,documentNumber,submissionDate,projectName
        FROM projects
        WHERE id='".$id."'";

$sql = "DELETE FROM projects
        WHERE id='".$id."'";

1/ まず、この 2 つのリクエストをどのように組み立てればよいでしょうか? 構文エラーが発生し続けます。

2/ ここで、プロジェクトに PHP で「1」から「3」までのステータス ( という名前の列status) を割り当て、ステータス「3」に達してから 2 か月後にこれらのプロジェクトをアーカイブしたいと考えています。どうすればそうできますか?

ご助力ありがとうございます。

4

1 に答える 1

0

アセンブルの意味がわかりません。おそらく、これら 2 つのクエリを 1 回の単純な呼び出しでクエリしたい場合、各クエリは次のようにクエリ区切り文字 (セミコロン) で終了する必要があります;

$sql = "INSERT INTO archive (idDocument,documentNumber,submissionDate,projectName)
    SELECT idDocument,documentNumber,submissionDate,projectName
    FROM projects
    WHERE id='".$id."';

    DELETE FROM projects
    WHERE id='".$id."';";

ステータスが 3 になってから 2 か月後に、ステータスが 3 のプロジェクトをアーカイブして削除する場合は、次のことを行う必要があります。

  1. プロジェクトをステータス 3 に更新するときに、date_changed = NOW()(または同様の式)も設定します。
  2. 毎日午前 3 時に実行される CRON ジョブを書き留めます。
  3. CRON ジョブは PHP スクリプトを呼び出します。このスクリプトはテーブルをたどってアーカイブし、ステータスが 3 以下projectsのすべてのプロジェクトを削除します ...date_changedNOW() - INTERVAL '2' MONTHS

それはトリックを行う必要があります...

于 2012-05-15T10:53:13.607 に答える