Yii框架批量插入数据扩展类的简单实现方法
更新时间:2017年5月26日 22:11 点击:2064
本文实例讲述了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程序设计有所帮助。
上一篇: php + nginx项目中的权限详解
下一篇: php验证码生成器
相关文章
- 这篇文章主要介绍了Yii框架实现图片上传的方法,结合实例形式较为详细的分析了Yii框架实现图片上传功能的具体步骤与相关操作技巧,需要的朋友可以参考下 本文实例...2017-07-06
- 这篇文章主要介绍了Yii框架实现邮箱激活的方法,基于邮箱发送邮件实现数字签名的激活功能,需要的朋友可以参考下...2016-10-20
- 这篇文章主要介绍了Yii框架批量插入数据扩展类的简单实现方法,涉及Yii扩展类及数据库相关操作技巧,需要的朋友可以参考下...2017-05-26
- 这篇文章主要介绍了Yii框架防止sql注入,xss攻击与csrf攻击的方法,结合实例形式分析了Yii框架针对sql注入,xss攻击与csrf攻击的防范方法与相关函数调用注意事项,需要的朋友可以参考下...2016-10-20
- 这篇文章主要介绍了Yii框架弹出框功能,结合实例形式分析了Yii框架弹出框的实现技巧,需要的朋友可以参考下...2017-01-15
- 这篇文章主要介绍了Yii框架分页实现方法,结合实例形式详细分析了基于Yii框架实现分页的原理、步骤与相关操作技巧,需要的朋友可以参考下...2017-05-26
- 这篇文章主要介绍了Yii框架参数化查询中IN查询只能查询一个的解决方法,结合实例形式分析了Yii框架中IN查询只能查一个的原因及FIND_IN_SET函数相关功能与使用技巧,需要的朋友可以参考下...2017-05-26
- 这篇文章主要介绍了Yii框架表单提交验证功能,结合实例形式分析了Yii框架表单提交验证功能的用法与相关注意事项,需要的朋友可以参考下...2017-01-15
- 这篇文章主要介绍了Yii框架结合sphinx,Ajax实现搜索分页功能,结合实例形式分析了Yii框架中使用sphinx与Ajax实现搜索结果的分页展示效果,需要的朋友可以参考下...2016-10-20
- 这篇文章主要介绍了Yii框架中sphinx索引配置方法,较为详细的分析了sphinx索引配置的步骤与相关操作技巧,需要的朋友可以参考下...2016-10-20
- 这篇文章主要介绍了Yii框架用户登录session丢失问题解决方法,通过针对底层代码的修改解决session丢失问题,具有一定参考借鉴价值,需要的朋友可以参考下...2017-01-15
- 这篇文章主要介绍了Yii框架弹出窗口组件CJuiDialog用法,结合实例形式较为详细的分析了Yii框架组件CJuiDialog的功能、使用方法与具体参数功能,需要的朋友可以参考下...2017-01-15
- 这篇文章主要介绍了Yii框架实现的验证码、登录及退出功能,结合具体实例形式分析了基于Yii框架实现的用户验证登录及退出操作相关步骤与操作技巧,需要的朋友可以参考下...2017-05-26
- 这篇文章主要介绍了Yii框架实现图片上传的方法,结合实例形式较为详细的分析了Yii框架实现图片上传功能的具体步骤与相关操作技巧,需要的朋友可以参考下...2017-05-26
- 这篇文章主要介绍了Yii框架中jquery表单验证插件用法,结合实例形式分析了Yii框架中使用jquery表单验证插件进行手机、邮箱等输入信息验证的相关操作技巧,需要的朋友可以参考下...2016-10-20
Yii框架引用插件和ckeditor中body与P标签去除的方法
这篇文章主要介绍了Yii框架引用插件和ckeditor中body与P标签去除的方法,结合实例形式分析了Yii框架中引入插件的步骤、实现方法与相关注意事项,需要的朋友可以参考下...2017-01-25