久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Yii框架批量插入數據擴展類的簡單實現方法

這篇文章主要介紹了Yii框架批量插入數據擴展類的簡單實現方法,涉及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程序設計有所幫助。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了ThinkPHP實現轉換數據庫查詢結果數據到對應類型的方法,涉及thinkPHP模型類操作及針對源碼文件的相關修改方法,需要的朋友可以參考下
本篇文章主要介紹了Laravel 批量更新多條數據的示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
這篇文章主要介紹了Thinkphp5+PHPExcel實現批量上傳表格數據功能,需要的朋友可以參考下
這篇文章主要給大家介紹了關于Laravel中數據遷移與數據填充的相關資料,文中通過示例代碼給大家詳細介紹了實現的步驟,對大家的學習或者工作具有一定的參考學習價值,需要的朋友
下面小編就為大家帶來一篇利用PHP訪問數據庫_實現分頁功能與多條件查詢功能的示例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
下面小編就為大家帶來一篇PHP中關于PDO數據訪問抽象層的功能操作實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 国产美女在线看 | 天天射天天干 | 亚洲精品电影 | 天久久 | 日韩久久中文字幕 | 久久99精品久久久97夜夜嗨 | 中文字幕一区二区三区四区 | 精品久久九 | 国产精品中文在线 | 亚洲精色 | 在线观看国产视频 | 91社区在线观看播放 | 亚洲精品久久久一区二区三区 | 欧美极品视频在线观看 | 夜夜爽99久久国产综合精品女不卡 | 午夜成人免费视频 | 91亚洲国产成人久久精品网站 | 免费一级网站 | av电影一区二区 | 国产一区二区三区四区在线观看 | 九九久久国产精品 | 日韩高清中文字幕 | 日韩精品视频一区二区三区 | 国产成人精品一区二区三区在线 | 亚洲欧洲精品成人久久奇米网 | 91av在线免费播放 | 正在播放国产精品 | 免费黄色录像视频 | 午夜精品一区二区三区在线播放 | 一区二区三区视频在线 | 国产三级国产精品 | 亚洲免费在线观看 | 国产高清视频 | 一区二区三区影院 | 久久久999国产精品 中文字幕在线精品 | 91社区在线观看 | 九九热精品免费 | 日韩色图在线观看 | 99综合网 | 中国三级黄色录像 | 欧美自拍视频 |