PHP TP3.2 addAll 刨根问底
|
一次进行大量的数据插入发现执行起来很慢之后优化想起批量添加想到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); 执行后生成的 sql 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); } (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
