php - mysql:事务?插入和更新

标签 php mysql transactions

我需要做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 查询启动事务
  • 提出疑问
  • 根据这些查询的结果,执行 COMMITROLLBACK 查询。

要检测查询是否成功,确实可以检查 mysql_query() 的返回值:如果出现错误,它将返回false

注意:MySQL 是旧的扩展——并且没有处理事务的功能;这意味着您必须将它们作为常规查询来处理。


MySQLi 合作,你可以使用:

关于php - mysql:事务?插入和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693986/

相关文章:

php - 在 PHP 中将混合分数字符串转换为 float

php - 将图像上传到数据库并根据 Android 中的用户请求进行检索(通过 PHP)

php - 可捕获的 fatal error : Object of class stdClass could not be converted to string in.。尝试插入数据库时

mysql - 如何在sql查询中生成可能组合的数量

php - 我应该如何从我网站上 2 个人之间的交易中扣款?

spring - @Transactional(readOnly = true) 导致 LazyInitializationException

javascript - 将 PHP 代码转换为 Javascript(内爆、打包和解包)

javascript - AJAX JQuery 上传图片

MySql:用于递增数字的正确事务隔离级别

javascript - 计算购物车发票总价