在mysql中更新表 - 删除旧,插入新,更新更新

时间:2013-02-17 19:13:20

标签: php html mysql

我有一个mysql表显示为html表。用户可以更新,插入和删除行。我想在点击保存按钮后更新我的mysql表。

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

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

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

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

  • 将删除的列添加到表中,默认值为0

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

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

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

  • 仅显示deleted = 0

  • 的行

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

此解决方案出现两个问题:

  • 不允许使用两个相同的行。如果找到重复项,mysql将只替换deleted = 0

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

3 个答案:

答案 0 :(得分:0)

我有两个想法如何做。

1

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

  

1 |简| 20

     

2 |菲利普| 30

     

3 |卢卡斯| 50

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

2

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

  • 如果可以的话,比向用户显示表格并在接受之后 将paralel table的paralel内容插入到使用过的内容中。

  • 如果不能,则写错误并不执行任何操作。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

在w3schools上查看“更新”。

你需要做一些事情:

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

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