1

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

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

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

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

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

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

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

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

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

  • 仅显示已删除 = 0 的行

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

这个解决方案会出现两个问题:

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

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

4

3 回答 3

0

我有两个想法如何去做。

1.

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

1.| 简 | 20

2.| 菲利普| 30

3.| 卢卡斯 | 50

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

2.

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

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

  • 如果不能,写错误并且什么都不做。

于 2013-02-17T19:24:43.323 回答
0

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

于 2013-02-17T19:26:51.723 回答
0

在 w3schools 上查看“更新”。

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

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

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

于 2013-02-18T00:33:55.390 回答