php批量新增数据类型,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类型数据):
/**
* 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框架的PHP程序设计有所帮助。
php批量新增数据类型,Yii框架批量插入数据扩展类的简单实现方法相关推荐
- php yii 插入,YII框架批量插入数据的方法
本文实例讲述了YII框架批量插入数据的方法.分享给大家供大家参考,具体如下: public function insertSeveral($table, $array_columns) { $sql ...
- SQL Server 批量插入数据方案 SqlBulkCopy 的简单封装,让批量插入更方便
在线工具 一.Sql Server插入方案介绍 关于 SqlServer 批量插入的方式,有三种比较常用的插入方式,Insert.BatchInsert.SqlBulkCopy,下面我们对比以下三种方 ...
- MyBatis框架——mybatis插入数据返回主键(mysql、oracle)
向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是 ...
- oracle新增id怎么写,oracle插入数据时自增ID的解决思路
一直在用MySQL,从来没有为自增ID发过愁,这初到oracle上,连自增ID都让我挠头,好在互联网资源丰富,我在充分吸取精华后,把我的一点经验总结出来给大家分享分享- 1. 创建一个sequence ...
- php插入数据含有特殊符号的处理方法
转自:http://www.cnblogs.com/lvcha/archive/2013/11/26/3443358.html 我们在向mysql写入数据时,比如: mysql_query (&quo ...
- 视频批量剪辑,将横屏视频改成竖屏最简单的方法
随着互联网的崛起,很多人在拍摄视频的时候没有去注意横屏还是竖屏,拍完了才发现不合适,这时可以借助一些技巧,去快速将多段横屏视频改为竖屏视频,小编今天分享操作方法,有需要的朋友一起来看看. 第一步,运行 ...
- Yii 框架网页播放器扩展,百度影音、优酷、搜狐等
2019独角兽企业重金招聘Python工程师标准>>> 下载源码 yii-web-player, 解压后放到 extensions 文件夹下. 在 view 中使用如下代码: 注意: ...
- php怎么读取excel里的数据类型,php读取excel表格数据-对PHPExcel一些简单的理解 及怎么读取单元格数据...
php读取excel,excel下多个个工作表,该怎么读取 php读取excel,excel下多个个工作表的方法: 1.利用PHPExcelReader来完成多个excel的读取. 2.PHPExce ...
- 关于ssh框架中hibernate扫描实体类的两种方法annotatedClasses和packagesToScan
[Hibernate]spring整合hibernate扫描实体类的两种方法annotatedClasses和packagesToScan的异同
最新文章
- 内含福利|CSDN 携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!
- 任正非:要感谢特朗普,他一吓唬,治好了华为人的富裕病,都努力工作了
- FFmpeg迎来20周年生日!凭一己之力养活全球无数播放器!
- 搭建elsticsearch集群 报错 failed to send join request to master [{data-node-0}(已经测试)
- [网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap普及
- 前端学习(2267)vue造轮子之添加icon
- android P版本ro.build.date时间修改
- 第三届IEEE普适媒体计算国际会议(U-Media 2010
- extend Thread 和 implements Runnable
- MATLAB图像处理(一)——计算机图形学之图像形状识别
- nginx 配置基于域名的虚拟主机
- 能量英语(一)之激情英语
- 入门Retrofit,看这一篇就够了
- 存储器——嵌入式系统
- 2021SC@SDUSC-Zxing(一):Zxing初步认识
- linux命令详解及软件安装(全)
- 转:浅析镜头分辨率和MTF测试
- 推荐一个单干网赚好站!BUXJOB - 生活至上,美容至尚!
- VS2015程序工程的ICO图标研究
- (详细教程)opencv+pycharm+笔记本摄像头 做一个人脸识别
热门文章
- DSDV的问题(Problems of DSDV)
- 大学一年级计算机教程视频教程,大学一年级公开课《计算机基础教程》期末试题复习.doc...
- thinkphp数据库连接池_Thinkphp5框架下的数据库连接
- gulp : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\gulp.ps1,因为在此系统上禁止运行脚本
- linus系统下载_系统管理程序卷土重来,Linus拒绝并阅读电子邮件,以及更多行业趋势
- tor 127.0.0.1_如何创建虚荣Tor .onion网站地址
- 30,000人如何帮助挑选新的Bash徽标
- 教育为什么重要 大数据_为什么开放数据在教育中很重要
- openstack_Facebook的WebScaleSQL,思科投资OpenStack等
- (15)HTML面试题集锦