我需要做2个查询。
基本上就是一个
mysql_query("INSERT INTO table ($value1,$value2)");
和
mysql_query("UPDATE table2 SET field1 = '$value1', field2 = '$value2'");
我想我可以简单地做一个
if (mysql_query("INSERT ...") !== false) {
mysql_query("UPDATE ...");
}
在这种情况下我应该使用事务吗?我该如何使用它?
或者我可以保留这个简单的“如果”吗?
谢谢
最佳答案
如果您想要某种“全有或全无”行为,您通常会使用事务。
基本上,通过交易,您可以:
- 开始交易
- 执行第一个查询
- 如果成功,则进行第二次查询
- 如果成功,则提交事务
- 否则,回滚事务 - 取消与该事务对应的两个查询。
如果使用 mysql_*
功能,你必须:
- 使用
START TRANSACTION
查询启动事务 - 提出疑问
- 根据这些查询的结果,执行
COMMIT
或ROLLBACK
查询。
要检测查询是否成功,确实可以检查 mysql_query()
的返回值:如果出现错误,它将返回false
。
注意:MySQL 是旧的扩展——并且没有处理事务的功能;这意味着您必须将它们作为常规查询来处理。
与 MySQLi 合作,你可以使用:
关于php - mysql:事务?插入和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693986/