【问题标题】:Update table in mysql - delete old, insert new, update updatedmysql中的更新表-删除旧的,插入新的,更新更新的
【发布时间】:2016-08-21 02:48:50
【问题描述】:

我有一个显示为 html 表的 mysql 表。用户能够更新、插入和删除行。单击保存按钮后,我想更新我的 mysql 表。

我目前的方法是删除所有行并在保存时插入所有新行。但是,当我的插入功能出现错误并且我已经删除了所有内容时,我遇到了问题。

我觉得这种方法很草率,导致不必要的删除。它可能会为了更新一个单元格而删除和插入 50 行。

在mysql中更新表的正确方法是什么?

编辑: 我目前的工作解决方案是这样的

  • 向表中添加一个已删除的列,默认值为0

  • 在表格上为行中的每个单元格创建唯一索引(ID 除外)

  • 保存表时,更新每一行,设置deleted = 1

  • 对于表中的每一行,插入 mysql,重复集删除 = 0

  • 仅显示已删除 = 0 的行

您可以选择删除已删除 = 1 的行来清理它,但我喜欢将其保留为备份。

这个解决方案有两个问题:

  • 不允许有两个相同的行。如果发现重复项,mysql 只会替换 deleted = 0

  • 如果一行中的一个单元格被更改,将创建一个新行,而不会简单地更新旧行。这可以修复,但我几乎不介意能够“撤消”编辑。

【问题讨论】:

  • SO 不是一个请代码的网站。请发布您尝试过的,有效的,无效的。
  • 我明白了。我正在寻找理论答案而不是代码,因为我假设这个问题很常见。
  • 好的,很抱歉反应过度。我明白了。

标签: php html mysql


【解决方案1】:

这周我遇到了同样的问题。 我的决定是将列表数据表保存在会话变量中。稍后,在mysql上插入这个变量列表。如果此插入脚本出现异常,我将回滚事务以撤消操作。但是,无一例外,所有行都被删除并且会话变量被清除。 我也需要改进这个过程!

【讨论】:

  • 谢谢弗雷德。如果你能给我声誉,我不会生气……哈哈;步骤
【解决方案2】:

我有两个想法。

1.

如果每一行都有一个 id,您可以直接处理更新。只是用户-> 数据库。如果无法应用更改,则不会删除任何内容。

1.|简 | 20

2.|菲利普| 30

3.|卢卡斯 | 50

生成查询,例如更新“2”,将他的年龄从 30 替换为 20,然后刷新窗口。将处理更新,不需要全部删除。刷新后,新的 html 表被写出所有的变化。

2.

继续使用您的方法,但确保在并行表中可以处理更新。

  • 如果可以,则向用户显示表格并在他接受后 并行表的并行内容将插入已使用的表中。

  • 如果不能,写错误,什么也不做。

【讨论】:

    【解决方案3】:

    查看 w3schools 的“更新”。

    你需要按照以下方式做一些事情:

    Update (tablename)
    Set (columnname)='newvalue'
    Where id='idYouWantToUpdate'
    

    更新是你想做的。不删除所有内容并重新插入所有内容。

    【讨论】:

    • 并非所有行都只是更新。用户可以在 HTML 中插入或删除行,以及更新单元格。
    猜你喜欢
    • 2014-08-27
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    相关资源
    最近更新 更多