我有一个mysql表显示为html表。用户可以更新,插入和删除行。我想在点击保存按钮后更新我的mysql表。
我当前的方法是删除所有行并在保存时插入所有新行。我遇到了问题,但是当我的插入函数出错时,我已经删除了所有内容。
我觉得这种方法很草率并导致不必要的删除。它可能会删除并插入50行只是为了更新一个单元格。
在mysql中更新表的正确方法是什么?
编辑: 我目前的工作解决方案是
将删除的列添加到表中,默认值为0
在表格中为行中的每个单元格创建唯一索引(ID除外)
保存表格时,更新每一行,设置deleted = 1
对于表中的每一行,插入到mysql中,在重复集上删除= 0
仅显示deleted = 0
您可以选择删除已删除= 1的行来清理它,但我希望将其保留为备份。
此解决方案出现两个问题:
不允许使用两个相同的行。如果找到重复项,mysql将只替换deleted = 0
如果更改了一行中的单元格,则会创建一个新行,而不会简单地更新旧行。这可以修复,但我几乎不介意有能力“撤消”编辑。
答案 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'
更新是你想要做的。不删除所有内容并再次插入所有内容。