***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/
目录
相关文章
|
3月前
Excel 里 ROW 公式的作用和使用场合介绍
Excel 里 ROW 公式的作用和使用场合介绍
57 0
|
3月前
127. 答网友疑问:ABAP Function Module 如何支持内表结构不确定的动态输入参数
127. 答网友疑问:ABAP Function Module 如何支持内表结构不确定的动态输入参数
19 0
|
4月前
|
SQL
Greenplum【SQL 03】实现树结构+自定义函数+避免函数重复调用+ function cannot execute on a QE slice 问题处理(优化过程全记录)
Greenplum【SQL 03】实现树结构+自定义函数+避免函数重复调用+ function cannot execute on a QE slice 问题处理(优化过程全记录)
36 0
|
测试技术
loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取Part 2
loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取Part 2
85 0
|
测试技术 数据安全/隐私保护
loadrunner 脚本优化-参数化之Parameter List参数同行取值
loadrunner 脚本优化-参数化之Parameter List参数同行取值
137 0
|
测试技术
loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取
loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取
87 0
|
Oracle 关系型数据库
设计一个Stock类和DividendStock类 - 编写了一个表示拥有股票情况的Stock类,这里给出了一个简化版,去掉了对参数的合法性的检查等细节:
设计一个Stock类和DividendStock类 - 编写了一个表示拥有股票情况的Stock类,这里给出了一个简化版,去掉了对参数的合法性的检查等细节:
136 0
设计一个Stock类和DividendStock类 - 编写了一个表示拥有股票情况的Stock类,这里给出了一个简化版,去掉了对参数的合法性的检查等细节:
|
缓存 开发框架 .NET
HttpRuntime Cache用法及参数解释
HttpRuntime Cache用法及参数解释
157 0
VB编程:DataPart函数判断当前所处季节-46
VB编程:DataPart函数判断当前所处季节-46
123 0
VB编程:DataPart函数判断当前所处季节
VB编程:DataPart函数判断当前所处季节
270 0
VB编程:DataPart函数判断当前所处季节