mysql_query(“BEGIN”);

$ck_id = M(‘ods’)->add($public);

foreach ($datas as $k => $val) {

$saveData = M('odo')->add($val);

}

由于插入到odo这个表的数据我是用 foreach循环插入多条数据,怎么判断这些数据全部插入成功了呢?要是有一条没有成功,就做回滚处理。

if($ck_id && $saveData){

mysql_query("COMMIT");

$this->success("数据提交成功","__GROUP__/Warehouse/outbound");

}else{

mysql_query("ROLLBACK");

$this->error("数据回滚,请重新提交");

}

mysql_query(“END”);

如果循环了5条数据,怎么判断 $saveData 知道5条数据都插入成功了呢?需要做一个计数器吗?在循环之前 定义一个变量 $count = 0;

每插入成功一条就$count+1;

类似这样的

$count = 0;

foreach ($datas as $k => $val) {

$saveData = M('odo')->add($val);

if($saveData>0) {

$count++;

}

}

if($ck_id && $count==5) {

回滚处理…..

}

这样可以吗?谁有什么好的方法啊

通常会把事务处理写在try-catch 结构里,当add()返回错误,直接抛出异常,catch里就可以捕获到异常,然后做相应的回滚和日志记录。

还有你的开启事务不能那样写,框架底层数据库驱动不一定是用mysql扩展函数写的,而且mysql扩展函数已经不建议使用了,而用 mysqli或pdo。

thinkphp 都有相应的数据库操作方法,应该使用其封装的方法。

你的方法是可以的,也可以改成有一个不成功就rollback和跳出循环。

mysqli貌似有回滚的接口吧。

判断保存后是否有影响行数,如果没有就rollback

mysql语句事务回滚_mysql语句,事务处理回滚的问题。相关推荐

  1. mysql中事务的特性_mysql中事务的四大特性

    原子性(Atomicity) 事务就像"原子"一样,不可被分割,组成事务的DML操作语句要么全成功,要么全失败,不可能出现部分成功部分失败的情况. 一致性(Consistency) ...

  2. mysql innodb事务中 出现_MySql InnoDB事务死锁问题

    这篇博客的文章内容发生于某天晚上服务端日志报了一大堆 Deadlock found when trying to get lock; try restarting transaction,当时通过字面 ...

  3. mysql有闪回吗_MySQL的闪回策略

    闪回原理 既然binlog以event形式记录了所有的变更信息,那么我们把需要回滚的event,从后往前回滚回去即可. 对于单个event的回滚,我们以表test.user来演示原理 mysql> ...

  4. mysql 默认事务隔离级别_MySQL 事务隔离级别详解

    个人公众号『码农札记』,欢迎关注,查看更多精彩文章. 简介: MySQL的事务隔离级别一共有四个,分别是读未提交.读已提交.可重复读以及可串行化. 四个特性ACID 原子性 (Atomicity) 事 ...

  5. mysql客户端与服务端_mysql语句在客户端与服务端的基本使用

    //把数据库导出到脚本文件 mysqldump -uroot -p1234 --databases abc > d:/a/abc.sql ---------------------------- ...

  6. mysql根据语句自动实现索引_mysql 语句的索引和优化

    一.基本语句优化 1.尽量避免在列上进行运算,这样会导致索引失败.例如: select * from table where DATE_FORMAT(`customer_regtime`,'%Y')& ...

  7. mysql执行语句返回主键_mysql语句insert后返回主键

    最近开发的一个项目中,因为需要,所以需要使用mybatis中的语句返回一个主键id,语句如下, INSERT INTO F_COMPANY( company_id, company_no, compa ...

  8. mysql语句在线生成网站_MYSQL语句生成器

    看到一位网友用JS做了一个这样一个类似的东西,于是试着用PHP试试看效果. 多提意见,谢谢! MYSQL语句生成器 2005-01-11 初步模型 2005-01-13 修改了可以输入数字及数字为开头 ...

  9. mysql语句创建商品表_MySQL语句创建表

    MySQL语句创建表 关注:242  答案:2  mip版 解决时间 2021-02-02 01:20 提问者慢慢学会遗忘 2021-02-01 12:06 最佳答案 二级知识专家抚弦思华年 2021 ...

最新文章

  1. LockBits in GDI+【转】http://timothyqiu.com/archives/lockbits-in-gdiplus/
  2. 【软件工程】技术规格说明书
  3. 深入java抽象类和接口
  4. ORACLE 数据库安装后,PL/SQL的登录问题完美解决
  5. 史上最让数学家无奈的规定!背后真相让人不敢相信,可是没有人能证明对错.........
  6. 信息学奥赛C++语言:火柴盒
  7. python去重复记录_python如何处理重复值数据?
  8. 给你出道题---如何蒙题
  9. 将python文件转换exe可执行程序
  10. 百度竞价软件测试面试,【百度SEM基础试题】百度推广竞价专员基础知识测试
  11. 使用Android 原生 API获取经纬度并且根据经纬度解析出当前具体位置信息
  12. 百度云服务器上安装docker步骤
  13. 全网超火的情感文案号视频是怎么制作的?
  14. 了解贝尔曼·福特算法
  15. 8的倍数——题解(容斥原理)
  16. python 中画球体_python – 有效地绘制许多球体
  17. 实现智能家居控制系统
  18. 赶紧收藏起来,宝妈做自媒体短视频赚了1w,全靠这8个素材网站
  19. node.js安装后输入“node -v”提示‘node‘ 不是内部或外部命令,也不是可运行的程序的解决方法
  20. HTML表单标签和HTML5新标签

热门文章

  1. 互联网公司分批返岗;Safari 将封杀超过398天的 HTTPS 证书;TypeScript 3.8 发布 | 极客头条...
  2. 双11猫晚直播:看阿里文娱如何“擒住”高并发、多视角、低卡顿!
  3. 字节跳动冬令营报名启动,邀你一起备战ICPC世界总决赛!
  4. @程序员,如何解决开发和运维之间的固有隔阂?
  5. 阿里云智能 AIoT 首席科学家丁险峰:阿里全面进军 IoT 这一年 | 问底中国 IT 技术演进
  6. Windows 3.1 往事:历史上第一个真正占据主导地位的操作系统
  7. @程序员,幼儿园小班都在学 AI,就问你慌不慌?
  8. 单身税的时代就要来临,你还没有用Python帮你找一个女朋友吗?
  9. 重磅开源!《阿里巴巴Android开发手册》抢鲜下载!
  10. python中数据读写_【循序渐进学Python——文件中数据的读写以及操作】