2011-04-07 50 views
0

我在插入mysql表时遇到问题。我有3个相关的表插入保存,但我想确保所有的查询都运行,或者没有。我已经在C#中完成了这项工作,但是我想知道如何在PHP中完成此工作。在mysql表中插入多个

回答

3

为了有一个全有或全无的行为,你需要使用一个交易:

  • 启动事务
  • 如果所有查询已成功执行做你的查询
  • ,提交
  • else,rollback。


在PHP中,如果与PDO工作,你要使用PDO::beginTransaction()PDO::commit()PDO::rollback()方法。

如果使用MySQLi,则需要使用mysqli::commit()mysqli::rollback() - 在禁用与mysqli::autocommit()的自动提交后。


要检测一个查询失败,你会想:

+0

谢谢你的回复。我正在使用核心的PHP。但我仍然对如何处理错误感到困惑。即我如何识别在查询执行过程中发生的错误。 – Abhilash 2011-04-07 10:36:35

+0

注意以下事项也很重要:1)除非表使用InnoDB引擎,否则事务命令会被服务器忽略2)无论API如何,您也可以手动运行相应的SQL命令。 – 2011-04-07 10:39:25

+0

我编辑了我的答案,提供了一些关于此的附加信息。 “core php”并没有太多意义:你必须使用扩展名*(PDO,mysql或mysqli)*连接到MySQL数据库 - 并且不应该再使用mysql *(不支持由最近版本的MySQL)* – 2011-04-07 10:40:11