我现在正在为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中,所有日期超过几个月的表也将被删除。这样,数据库就不会变得太大了。
答案 0 :(得分:0)
相反,要创建表,您可以为此表中的每条记录指定日期。然后,您可以删除太旧的条目。
之后如果您仍想创建存档表...您可以考虑有关multiple statements in one statement string的文档。您必须使用mysqli.multi-query。
答案 1 :(得分:0)
创建带有时间戳名称的表是不好的选择..
答案 2 :(得分:0)
不确定为什么要选择创建多个表,因为这将是一场噩梦。
但只是您知道在一次操作中不会执行多个查询。你可以使用mysqli :: multi_query来做到这一点。然后,再次确保已授予db用户创建表的访问权限。
我的建议是要添加一个额外的列“Date”设置为索引并刷新此数据(删除过时插入new或INSERT ON DUPLICATE KEY UPDATE或INSERT IGNORE,因为您的应用程序需要记录此数据)。如果,每月存储数据等,您可能需要研究MySQL存储桶。