一次进行大量的 数据插入 发现执行起来很慢 之后优化想起 批量添加 想到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);
}
继续阅读与本文标签相同的文章
上一篇 :
maven 最基本配置pom.xml配置
-
跨境电商女装开发风向标
2026-05-18栏目: 教程
-
线上线下场景全方面打通,小程序成为家居行业的新卖点!
2026-05-18栏目: 教程
-
下载一款手机软件后,为何总是要让我们授权一些,看似毫无关联的权限?
2026-05-18栏目: 教程
-
千元机vivo Z5性能测试,妹子足够用
2026-05-18栏目: 教程
-
【从入门到放弃-ZooKeeper】ZooKeeper入门
2026-05-18栏目: 教程
