预览更新/插入查询的结果而不提交MySQL中的数据库更改?

时间:2010-04-14 12:50:37

标签: php mysql transactions innodb

我正在编写一个脚本,将CSV文件导入我的数据库中的现有表。我决定使用PHP和INSERT / UPDATE语句自己进行插入/更新操作,而不是使用MySQL的LOAD INFILE命令,我有充分的理由。

我想要做的是模拟插入/更新操作并将结果显示给用户,然后为他们提供确认这是正常的选项,然后将更改提交到数据库。

我正在使用InnoDB数据库引擎来支持事务。不确定这是否有帮助,但是考虑插入/更新,查询数据,显示给用户,然后提交或回滚事务?

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:5)

更简单的方法就是这样。

在预览页面上:

  1. 缓冲你的php输出
  2. 开始交易
  3. 进行插入和更新
  4. 选择您的数据
  5. 输出你想要的
  6. 回滚
  7. 然后在确认页面上:

    1. 缓冲输出
    2. 开始交易
    3. 执行插入和更新
    4. 提交
    5. 输出您想要的内容

答案 1 :(得分:0)

您可以将数据导入单独的“导入”表格。向用户显示表格的结果。如果他单击“确定”,则将该数据复制到主表并删除导入表。如果他点击“取消”,只需删除导入表。

应该逐个用户选择导入表名,以便不同的用户不会覆盖他们的表。

事务在这里没有帮助,因为当PHP导入脚本完成时,事务将回滚。