-5

現在、cronjob のクエリをいくつか書いています。クエリでは、既存のテーブルと同様にテーブルを作成する必要があります。テーブル名に(区切りなしで)翌日の日付を追加するだけです。

私はこの解決策を思いつきました: 明日の日付までのコード:

$date = date ('dmY');
$date = strtotime(date("dmY", strtotime($date)) . " +1 day");

クエリ:

$queryvc = "CREATE TABLE vervanger$date LIKE vervanger;
            INSERT vervanger$date SELECT * FROM vervanger";

これを PHP でエコーすると、必要な結果が得られますが、クエリは実行されません。$dateそして、通常は必須であるクエリから を「切り出さない」という事実が原因だと思います。誰にもこれに対する解決策がありますか?

クエリは cronjob で週に 1 回実行されますが、cronjob では、数か月以上前の日付を持つすべてのテーブルも削除されます。そうすれば、データベースが大きくなりすぎることはありません。

4

3 に答える 3

0

これは悪夢になるため、複数のテーブルの作成を選択する理由がわかりません。

ただし、1回の操作で複数のクエリが実行されないことに注意してください。これは、mysqli::multi_queryを使用して実行できます。次に、dbユーザーにテーブルを作成するためのアクセス権が付与されていることを確認します。

私の提案は、インデックスとして設定された追加の列「日付」を追加し、このデータを更新することです(アプリケーションがこのデータを記録する必要があるため、古い挿入を削除するか、重複キーの更新で挿入または無視を挿入します)。データが毎月保存される場合など、MySQLバケットを調査することをお勧めします。

于 2012-10-22T12:36:44.420 に答える
0

テーブルを作成する代わりに、このテーブルの各レコードに日付を付けることができます。次に、古すぎるエントリを削除できます。

その後もアーカイブ テーブルを作成したい場合は、1 つのステートメント文字列内の複数のステートメントに関するこのドキュメントを検討してください。mysqli.multi-queryを使用する必要があります。

于 2012-10-22T12:12:53.747 に答える
0
  • 最初にアーカイブ データベース (vervanger_archive) を作成します。
  • DATE_ADD を設定していない場合は、元のベースで 2 番目 (各行のタイムスタンプを追加)。
  • OLD 行を元のテーブルからアーカイブ テーブルに移動する 3 番目の SET 1 cron タスクを 1 日に 1 回実行します。

タイムスタンプ名でテーブルを作成するのは悪い選択です..

于 2012-10-22T12:20:18.200 に答える