最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Yii框架批量插入數(shù)據(jù)擴展類的簡單實現(xiàn)方法

 更新時間:2017年05月23日 08:59:34   作者:陳小峰_iefreer  
這篇文章主要介紹了Yii框架批量插入數(shù)據(jù)擴展類的簡單實現(xiàn)方法,涉及Yii擴展類及數(shù)據(jù)庫相關操作技巧,需要的朋友可以參考下

本文實例講述了Yii框架批量插入數(shù)據(jù)擴展類的簡單實現(xiàn)方法。分享給大家供大家參考,具體如下:

MySQL INSERT語句允許插入多行數(shù)據(jù),如下所示:

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

那么要實現(xiàn)批量插入,主要的任務就是按照列順序,把數(shù)據(jù)組裝成上述格式即可,可以使用sprintf和vsprintf函數(shù)來實現(xiàn)。

下面是一個實現(xiàn)批量插入的Yii擴展類的簡單示例(支持VARCHAR類型數(shù)據(jù)):

<?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方法逐個加入數(shù)據(jù),然后調用execute執(zhí)行。

更多關于Yii相關內容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結》、《php優(yōu)秀開發(fā)框架總結》、《smarty模板入門基礎教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。

相關文章

  • 基于ThinkPHP實現(xiàn)的日歷功能實例詳解

    基于ThinkPHP實現(xiàn)的日歷功能實例詳解

    這篇文章主要介紹了基于ThinkPHP實現(xiàn)的日歷功能,結合實例形式詳細分析了基于thinkPHP實現(xiàn)日歷功能的相關界面布局、數(shù)據(jù)庫操作與日期時間運算相關技巧,需要的朋友可以參考下
    2017-04-04
  • Yii核心組件AssetManager原理分析

    Yii核心組件AssetManager原理分析

    這篇文章主要介紹了Yii核心組件AssetManager原理分析,較為詳細的分析了AssetManager組件的原理與實現(xiàn)過程,有助于深入了解yii框架的特性,需要的朋友可以參考下
    2014-12-12
  • PHP多進程編程實例

    PHP多進程編程實例

    這篇文章主要介紹了PHP多進程編程實例,本文講解的是在Linux下實現(xiàn)PHP多進程編程,需要的朋友可以參考下
    2014-10-10
  • PHP框架實現(xiàn)WebSocket在線聊天通訊系統(tǒng)

    PHP框架實現(xiàn)WebSocket在線聊天通訊系統(tǒng)

    這篇文章主要介紹了PHP框架結合實現(xiàn)WebSocket在線聊天通訊系統(tǒng),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • 將博客園(cnblogs.com)數(shù)據(jù)導入到wordpress的代碼

    將博客園(cnblogs.com)數(shù)據(jù)導入到wordpress的代碼

    博客園限制太多,于是決定從博客園(cnblogs)更換自己個人的博客。WORDPRESS口碑還不錯,于是決定用用看。之前發(fā)的數(shù)百篇日志需要導入過來,在網(wǎng)上搜了一會,發(fā)現(xiàn)沒有這個插件,無奈只能自己寫一個
    2013-01-01
  • Laravel 的數(shù)據(jù)庫遷移的方法

    Laravel 的數(shù)據(jù)庫遷移的方法

    本篇文章主要介紹了Laravel 的數(shù)據(jù)庫遷移的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • destoon安裝出現(xiàn)Internal Server Error的解決方法

    destoon安裝出現(xiàn)Internal Server Error的解決方法

    這篇文章主要介紹了destoon安裝出現(xiàn)Internal Server Error的解決方法,需要的朋友可以參考下
    2014-06-06
  • laravel 實現(xiàn)關閉CSRF(全部關閉、部分關閉)

    laravel 實現(xiàn)關閉CSRF(全部關閉、部分關閉)

    今天小編就為大家分享一篇laravel 實現(xiàn)關閉CSRF(全部關閉、部分關閉),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • Laravel實現(xiàn)定時任務的示例代碼

    Laravel實現(xiàn)定時任務的示例代碼

    本篇文章主要介紹了Laravel實現(xiàn)定時任務的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 使用Composer安裝Yii框架的方法

    使用Composer安裝Yii框架的方法

    這篇文章主要介紹了使用Composer安裝Yii框架的方法,結合具體實例分析了Composer的相關使用技巧,需要的朋友可以參考下
    2016-03-03

最新評論

丹凤县| 广宁县| 东至县| 同德县| 临猗县| 格尔木市| 涞水县| 天长市| 义乌市| 温泉县| 兰州市| 句容市| 广东省| 社会| 平远县| 巴彦县| 昆山市| 浦东新区| 丹棱县| 阿勒泰市| 新河县| 渑池县| 江油市| 那曲县| 横山县| 宁武县| 中宁县| 拉萨市| 岳阳县| 麻栗坡县| 百色市| 江津市| 旺苍县| 五华县| 铁岭县| 灵石县| 乐都县| 唐河县| 延庆县| 襄城县| 姚安县|