一次进行大量的 数据插入 发现执行起来很慢 之后优化想起 批量添加 想到addAll() 单信不过效率,直追TP源码查看生成语句 才放心使用!
// 批量添加数据
$user = M('user');
//array('表字段'=>'值')
$dataList[] = array('name'=>'PHP','email'=>'admin@gamil.com');
$dataList[] = array('name'=>'thinkPHP','email'=>'admin@gamil.com');
$insertInfo = $user->addAll($dataList);
INSERT INTO `tb_user` (`name`,`email`) VALUES ('PHP','admin@gamil.com'),('thinkPHP','admin@gamil.com')
TP 3.2 源码
/**
* 插入记录
* @access public
* @param mixed $datas 数据
* @param array $options 参数表达式
* @param boolean $replace 是否replace
* @return false | integer
*/
public function insertAll($datas,$options=array(),$replace=false) {
if(!is_array($datas[0])) return false;
$fields = array_keys($datas[0]);
array_walk($fields,array($this,'parseKey'));
$values = array();
foreach ($datas as $data){
$value = array();
foreach ($data as $key=>$val){
$val = $this->parseValue($val);
if(is_scalar($val)) { // 过滤非标量数据
$value[] = $val;
}
}
$values[] = '('.implode(',',$value).')';
}
$sql = ($replace?'REPLACE':'INSERT').' INTO '.$this->parseTable($options['table']).' ('.implode(',$fields).') VALUES '.implode(',$values);
return $this->execute($sql);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。