加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP TP3.2 addAll 刨根问底

发布时间:2020-05-25 02:49:12 所属栏目:PHP 来源:互联网
导读:本文章向大家介绍PHP TP3.2 addAll 刨根问底,主要包括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);

}

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读