yii 插入多条数据

如何用yii一次性插入多条数据很困扰,今天努力看看源码想到了一个办法, 如有错误请及时联系我及时改正,以防误导他人, 希望看这篇博文时大家紧做参考

废话少说看代码:

$db = Yii::app()->db;
$transaction = $db->beginTransaction();
$command = $db->createCommand();
try {
	$_files = array(
		array('name'=>'abc', 'size'=>'12000'),
		array('name'=>'abc2', 'size'=>'12000'),
		array('name'=>'abc3', 'size'=>'12000')
	);
	if ($_files) {
		foreach($_files as $files) {
			$command->reset();
			foreach($files as $k=>$v) {
				$columArray[$k] =$v;
			}
			$command->insert(FileConvert::model()->tableName(),$columArray);
		}
	}
	$transaction->commit();
	return true;
} catch (Exception $e) {
	$transaction->rollback(); // 如果操作失败, 数据回滚
	return false;
}

每次循环要用reset() 重置command 之后insert不要掉excetue()执行, 因为在commit时会自动执行,这样就能一次插入多条数据而不用自己拼sql了

但是这个是有缺点的若一次执行很多条的话效率会变慢毕竟这个相当于执行多条这样的sql:insert into table values(‘a‘, ‘b‘);

而我们手动拼的sql是这样的: insert into table values(‘a‘,‘b‘),(‘c‘,‘d‘);这样相对效率比较高

所以要是写入的数据少的话可以使用以上方法

yii 插入多条数据

时间: 2024-10-12 20:52:18

yii 插入多条数据的相关文章

用一句mysql语句插入多条数据

假如有一个数据表A: id name title addtime 如果需要插入n条数据 : $time= time(); $data = array(    array(      'name'=>'name1','title'=>'title1','addtime'=>$time;    ),    array(      'name'=>'name2','title'=>'title2','addtime'=>$time;    ),    array(      

jdbc:mysql和oracle插入一条数据返回主键

package org.sin.common.dao; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import or

使用JDBC向数据库中插入一条数据

原谅我是初学者,这个方法写的很烂,以后不会改进,谢谢 /** * 通过JDBC向数据库中插入一条数据 1.Statement 用于执行SQL语句的对象 1.1 通过Connection 的 * createStatement() 方法来获取 1.2 通过executeUpdate(sql) 的方法来执行SQL 1.3 * 传入的SQL可以是INSERT/UPDATE/DELETE,但不能是SELECT * * 2.Connection和Statement使用后一定要记得关闭 需要在finally

数据库一次性插入10w条数据,怎么插入效率快

在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题 下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters). bulk方法主要思想是通过在客户端把数据都缓存在Table中,然后利用SqlBulkCopy一次性把Table中的数据插入到数据库 代码如下: public static void BulkToDB(DataTab

PHP MySQL 插入多条数据

PHP MySQL 插入多条数据 使用 MySQLi 和 PDO 向 MySQL 插入多条数据 mysqli_multi_query() 函数可用来执行多条SQL语句. 以下实例向 "MyGuests" 表添加了三条新的记录: 实例 (MySQLi - 面向对象) <?php$servername = "localhost";$username = "username";$password = "password";$d

SQL Server之 (三) 分组 类型转换函数 插入多条数据 字符串函数

SQL Server之 (三)  分组 类型转换函数  插入多条数据  字符串函数 自己学习笔记,转载请注明出处,谢谢!---酸菜 1.SQL 数据分组----Group by /Having  ①有一学生信息表:StuID/StuName/StuAge/StuGender/StuClassID; 求每个班级的ID和对应人数:select StuClassID 班级ID,count(*) 班级人数  from StuInfo group by StuClassID ; 求所有同学中男女同学对应人

SQL中一次插入多条数据

SQL中insert一次可以插入一条数据,我们有三种方法可以一次性插入多条数据. 1. 语法:select 字段列表 into 新表 from 源表 注意事项:此种方法新表是系统自动创建,语句执行前不可以存在新表,并且新表只能保留源表的标识列特性,其他约束不能保留. 若只需要源表的数据结构,我们可以在语句中添加(top 0) 2. 语法:insert into 目的表 select 字段列表 from 源表 注意事项:此种方法目的表必须在语句执行前存在,并且每一列要与源表对应. 在此处还有一些有

oracle一次插入多条数据

1 insert into 表名(字段1,字段2) 2 select '一','二' from dual 3 union all 4 select '三','四' from dual 5 union all 6 select '五','六' from dual 7 union all 8 select '七','八' from dual 9 union all 10 select '九','十' from dual; 利用dual一次性插入多条数据

mysql一次插入多条数据

mysql一次插入多条数据: INSERT INTO hk_test(username, passwd) VALUES ('qmf2', 'qmf2'),('qmf3', 'qmf3'),('qmf4', 'qmf4'),('qmf5', 'qmf5') GO