全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Yii框架批量插入数据扩展类的简单实现方法

本文实例讲述了Yii框架批量插入数据扩展类的简单实现方法。分享给大家供大家参考,具体如下:

MySQL INSERT语句允许插入多行数据,如下所示:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

那么要实现批量插入,主要的任务就是按照列顺序,把数据组装成上述格式即可,可以使用sprintf和vsprintf函数来实现。

下面是一个实现批量插入的Yii扩展类的简单示例(支持VARCHAR类型数据):

<?php
/**
 * class for sql batch insert
 */
class CDbBICommand extends CDbCommand{
  /** @var CActiveRecord $class */
  private $class;
  /** @var string $insert_tpl */
  private $insert_tpl = "insert into %s(%s) ";
  /** @var string $value_tpl */
  private $value_tpl = "(%s)";
  /** @var string $query */
  public $query;
  /** @var CDbColumnSchema[] $columns */
  private $columns;
  /** @var boolean $fresh */
  private $fresh;
  /** @param CActiveRecord $class
   * @param CDbConnection $db
   */
  public function __construct($class,$db){
   $this->class = $class;
   $this->createtpl();
   parent::_construct($db);
  }
  private function createtpl(){
   $this->fresh = true;
   $value_tpl = "";
   $columns_string = "";
   $this->columns = $this->class->getMetaData()->tableSchema->columns;
   $counter = 0;
   foreach($this->columns as $column){
    /** @var CDbColumnSchema $column */
    if($column->autoIncrement){
     $value_tpl .= "0";
    }else{
     $value_tpl .= "\"%s\"";
    }
    $columns_string .= $column->name;
    $counter ++;
    if($counter != sizeof($this->columns)){
     $columns_string .= ", ";
     $value_tpl .= ", ";
    }
   }
   $this->insert_tpl = sprintf($this->insert_tpl, $this->class->tableName(), $columns_string);
   $this->value_tpl = sprintf($this->value_tpl, $value_tpl);
  }
  /**
   * @param CActiveRecord $record
   */
  public function add($record){
   $values = array();
   $i = 0;
   foreach($this->columns as $column){
    if($column->autoIncrement){
     continue;
    }
    $values[$i] = $this->class->{$column->name};
    $i ++;
   }
   if(!$this->fresh){
    $this->query .= ",";
   }else{
    $this->query = "values";
   }
   $this->fresh = false;
   $this->query .= vsprintf($this->value_tpl, $values);
   return true;
  }
  public function execute(){
   $this->setText($this->insert_tpl." ".$this->query);
   return parent::execute();
  }
}

使用方法是通过add方法逐个加入数据,然后调用execute执行。

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。


# Yii框架  # 批量插入  # 数据  # 扩展类  # 从零开始学YII2框架(三)扩展插件yii2-gird  # 从零开始学YII2框架(二)通过 Composer 安装扩展插件  # 从零开始学YII2框架(四)扩展插件yii2-kartikgii  # Yii2分页的使用及其扩展方法详解  # Yii2中OAuth扩展及QQ互联登录实现方法  # 详解PHP的Yii框架中扩展的安装与使用  # Yii安装与使用Excel扩展的方法  # YII视图整合kindeditor扩展的方法  # Yii扩展组件编写方法实例分析  # Yii中srbac权限扩展模块工作原理与用法分析  # YII框架实现自定义第三方扩展操作示例  # 程序设计  # 是一个  # 相关内容  # 感兴趣  # 给大家  # 可以使用  # 所示  # 更多关于  # 来实现  # 所述  # 面向对象  # 行数  # 操作技巧  # 讲述了  # CDbBICommand  # extends  # CDbCommand  # insert  # lt  # batch 


相关文章: 个人摄影网站制作流程,摄影爱好者都去什么网站?  一键网站制作软件,义乌购一件代发流程?  英语简历制作免费网站推荐,如何将简历翻译成英文?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  如何解决ASP生成WAP建站中文乱码问题?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  模具网站制作流程,如何找模具客户?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  如何快速搭建高效WAP手机网站?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  如何快速登录WAP自助建站平台?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  建站之星安装失败:服务器环境不兼容?  Android自定义控件实现温度旋转按钮效果  XML的“混合内容”是什么 怎么用DTD或XSD定义  佛山企业网站制作公司有哪些,沟通100网上服务官网?  手机网站制作与建设方案,手机网站如何建设?  山东网站制作公司有哪些,山东大源集团官网?  如何在云指建站中生成FTP站点?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  定制建站价位费用解析与套餐推荐全攻略  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  海南网站制作公司有哪些,海口网是哪家的?  金*站制作公司有哪些,金华教育集团官网?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  SQL查询语句优化的实用方法总结  建站之星安装后如何自定义网站颜色与字体?  无锡营销型网站制作公司,无锡网选车牌流程?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  大连网站设计制作招聘信息,大连投诉网站有哪些?  ,柠檬视频怎样兑换vip?  网站图片在线制作软件,怎么在图片上做链接?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  建站之星×万网:智能建站系统+自助建站平台一键生成  教程网站设计制作软件,怎么创建自己的一个网站?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  学校免费自助建站系统:智能生成+拖拽设计+多端适配  子杰智能建站系统|零代码开发与AI生成SEO优化指南  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  定制建站是什么?如何实现个性化需求?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  ,网页ppt怎么弄成自己的ppt?  代购小票制作网站有哪些,购物小票的简要说明?  青岛网站建设如何选择本地服务器? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。