***codeigniter 2.2 affected_rows()返回值不准确

简介: http://blog.icodeu.com/?p=596 问题描述今天在完成一个项目调用想要检验一下计划插入的数据是否都正常插入了。调用insert_batch()方法插入一百多条数据的时候发现affected_rows()返回值不准确。

http://blog.icodeu.com/?p=596

问题描述
今天在完成一个项目调用想要检验一下计划插入的数据是否都正常插入了。调用insert_batch()方法插入一百多条数据的时候发现affected_rows()返回值不准确。
问题分析
1.第一步打印last_query()发现插入的数据和affected_rows()数值确实是一样的
2.检查数据库,发现需要插入的一百多条数据也确实正常插入了
3.查看了一下代码,才知道在insert_batch()和update_batch()的时候,如果数据量大于100条,将会分多次插入,每次最多只会插入一百条。
详见下面的代码

1
2
3
4
5
6
// Batch this baby
for ( $i = 0, $total = count ( $this ->ar_set); $i < $total ; $i = $i + 100)
{
     $sql = $this ->_update_batch( $this ->_protect_identifiers( $table , TRUE, NULL, FALSE), array_slice ( $this ->ar_set, $i , 100), $this ->_protect_identifiers( $index ), $this ->ar_where);
     $this ->query( $sql );
}

影响范围
insert_batch(),update_batch()
解决方案
对插入的数据进行求余然后和affected_rows()进行对比检验插入数据是否正确

github上官方已经修复了这个问题

https://github.com/bcit-ci/CodeIgniter/tree/2.2-stable

 
 
1
2
3
4
5
6
7
     // Batch this baby
$affected_rows = 0;
for ( $i = 0, $total = count ( $this ->qb_set); $i < $total ; $i += 100)
{
$this ->query( $this ->_insert_batch( $this ->protect_identifiers( $table , TRUE, NULL, FALSE), $this ->qb_keys, array_slice ( $this ->qb_set, $i , 100)));
$affected_rows += $this ->affected_rows();
}
如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/
目录
相关文章
|
安全 区块链 数据安全/隐私保护
蚂蚁区块链的优势是什么
蚂蚁区块链的优势是什么
771 2
|
JSON Linux 数据安全/隐私保护
|
10月前
|
消息中间件 存储 监控
高弹性、低成本的云消息队列RabbitMQ 版
本次课程由阿里云消息队列产品专家杨文婷分享,主题为高弹性、低成本的云消息队列RabbitMQ。内容涵盖四个方面:1) 产品优势,包括兼容开源客户端、解决稳定性痛点和高弹性低成本;2) 架构实现原理,如分布式架构和弹性调度系统;3) Serverless系列带来的按量付费模式和资源池优势;4) Serverless适用场景,如开发测试环境、峰谷流量业务等。最后解答了关于顺序消费、与普通MQ对比、自动扩容及API支持等常见问题。
371 46
|
11月前
|
机器学习/深度学习 人工智能 安全
元宇宙中的数字身份:重塑社交网络
在科技飞速发展的今天,元宇宙正从科幻概念变为现实。本文探讨了元宇宙中数字身份的重要性、技术基础及其对社交网络的重塑。数字身份作为连接现实与虚拟世界的桥梁,通过分布式数字身份(DID)、区块链和人工智能等技术,不仅增强了社交互动性,拓展了社交边界,还保障了用户的隐私与安全。未来,数字身份将与元宇宙深度融合,为人类带来更加丰富、多元的数字生活体验。
|
10月前
|
人工智能
阿里云领跑生成式AI工程领域,两大维度排名Gartner®生成式AI工程Market Quadrant全球第二
阿里云凭借强劲实力入选Gartner 《Innovation Guide for Generative AI Technologies》所有领域的新兴领导者象限。
|
存储 安全 生物认证
身份验证的三种类型详解
【8月更文挑战第31天】
1678 1
|
移动开发 Java 对象存储
OSS 跨域配置
经常遇到有跨域的问题,老生长谈,却又屡禁不止,谈到跨域我们就了解下它是什么?(以下数据均为模拟数据,屏蔽了真实用户数据)
8405 0
OSS  跨域配置
|
安全
视频|年最新免费注册MicroSoft365的方法!保姆级教程!!
我们平常说的版本,如:2013、2016等,是那个年份前后推出的office办公套件,我们购买(激活)后,就只能一直使用那个版本,如果想升级新版本,可能需要重新购买(激活)。
772 0
|
机器学习/深度学习 数据采集 人工智能
AI在戏剧与表演艺术中的应用
AI在戏剧与表演艺术中的应用
1185 0
|
定位技术
任意一张图片的CGCS2000坐标配准
任意一张图片的CGCS2000坐标配准
365 0