【问题标题】:Move mysql row to another table in the same database将mysql行移动到同一数据库中的另一个表
【发布时间】:2014-07-11 00:57:21
【问题描述】:

显然,当谈到这些东西时,我是一个 n00b。我感谢这个网站给我的所有帮助。所以我又一次陷入了困境。我想将一个表(约会)中的条目复制到另一个表(已删除)。我在删除条目方面得到了一些帮助,该代码将在主代码中,所以这里是:

$stmt = mysqli_prepare($transport, "DELETE FROM appointments WHERE id = ?");

mysqli_stmt_bind_param($stmt, "i", $id);
foreach ($_POST['delete'] as $id) 
    {
        mysqli_stmt_execute($stmt);
    }

删除代码就像一个魅力。我也有更新字段的代码:

$size = count($_POST['room_n']);
$i=0;
while ($i < $size)
{
    $room_n = mysqli_real_escape_string($transport, $_POST['room_n'][$i]);
    $id = $_POST['id'][$i];
    $sql = "UPDATE appointments SET room = '$room_n' WHERE id = $id";
    mysqli_query($transport, $sql) or die('Error: ' . mysqli_error($transport));

    ++$i;

}

这也 100% 有效。我尝试使用相同类型的 while 循环将已删除的项目插入到删除表中,但它只会给我错误。我还尝试将插入代码放在mysqli_stmt_execute 前面,但我知道它只是没有发布。所以我不确定我能做什么。再次感谢您的帮助!

【问题讨论】:

  • 为什么要移动它?为什么不添加一个名为“record_status”的列或具有“活动”、“已删除”等值的内容?
  • 嗯,这是一个运输时间表。我不想让它充满错误。我希望他们能够将其删除,但我也希望保留已取消的约会和错误的记录以备记录。
  • SELECT a,b,c FROM transporation_schedule WHERE record_status !="deleted"
  • 我假设我会把它放在一个while循环中,user1032531?
  • 如果您实施状态列,您将保留已删除的记录,您只需将它们标记为此类,并将它们从常规查询中排除。

标签: php mysql


【解决方案1】:

您可以使用功能INSERT ... SELECT

INSERT INTO `deleted` SELECT * FROM appointments WHERE id = $id

附:不要忘记使用事务,因为您正在执行包含两个查询的操作。

附言最好添加状态字段,例如id_deleted

P.P.P.S.不要使用mysql_ 函数

【讨论】:

    猜你喜欢
    • 2013-10-18
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多