0

我有两个表,projects并且archive具有相同的列。archive如您所知,在某些条件下,我需要将项目存档在表中。

我写了两个请求,如果单独执行它们工作正常,但我想组装它们。

$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/ 现在,我在 PHP 中为项目分配了一个从“1”到“3”的状态(在名为 的列中status),我想在这些项目达到状态“3”两个月后归档这些项目。我该怎么做?

非常感谢您的帮助。

4

1 回答 1

0

不知道你的组装是什么意思,也许你想在一个简单的调用中查询这两个查询,那么每个查询应该以查询分隔符结束 - 一个分号;,像这样:

$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 的项目,它们的状态为 3,您必须执行以下操作:

  1. 将项目更新为状态 3 时,还设置date_changed = NOW()(或类似的表达式)
  2. 写下一个 CRON 作业,假设每天凌晨 3:00 执行。
  3. CRON 作业将调用一个 PHP 脚本,该脚本将遍历projects表并归档 + 删除所有状态为 3date_changed且小于或等于NOW() - INTERVAL '2' MONTHS...的项目

这应该够了吧...

于 2012-05-15T10:53:13.607 回答