>  기사  >  php教程  >  codeigniter 2.2 affected_rows()返回值不准确

codeigniter 2.2 affected_rows()返回值不准确

WBOY
WBOY원래의
2016-06-06 20:13:451230검색

问题描述 今天在完成一个项目调用想要检验一下计划插入的数据是否都正常插入了。调用insert_batch()方法插入一百多条数据的时候发现affected_rows()返回值不准确。 问题分析 1.第一步打印last_query()发现插入的数据和affected_rows()数值确实是一样的 2.检

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

// Batch this baby
for ($i = 0, $total = count($this->ar_set); $i _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上官方已经修复了这个问题

	// Batch this baby
$affected_rows = 0;
for ($i = 0, $total = count($this->qb_set); $i 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();
}
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.