-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 每周运行一次,但在 cronjob 中,日期超过几个月的所有表也将被删除。这样数据库就不会变得太大。

4

3 回答 3

0

而不是创建一个表,也许你可以给这个表中的每条记录一个日期。然后您可以删除太旧的条目。

之后,如果您仍想创建一个存档表......您可以考虑这个关于一个语句字符串中的多个语句的文档。你必须使用mysqli.multi-query

于 2012-10-22T12:12:53.747 回答
0
  • 第一次创建存档数据库(vervanger_archive)。
  • 如果您没有设置 DATE_ADD(为每一行添加时间戳),则在原始基础上排名第二。
  • 3rd SET 1 cron 任务每天一次,将 OLD 行从原始表移动到存档表。

创建带有时间戳名称的表是不好的选择。

于 2012-10-22T12:20:18.200 回答
0

不知道为什么要选择创建多个表,因为这将是一场噩梦。

但只是您知道多个查询不会在一个操作中执行。您可以使用 mysqli::multi_query 执行此操作。然后再次确保 db 用户已被授予创建表的访问权限。

我的建议是添加一个附加列“日期”设置为索引并刷新此数据(删除过时的插入新或插入重复键更新或插入忽略,因为您的应用程序需要记录此数据)。如果数据按月存储等,您可能需要研究 MySQL 存储桶。

于 2012-10-22T12:36:44.420 回答