thinkphp 同时更新多条数据
来源:互联网 发布:美国 制造业回归 知乎 编辑:程序博客网 时间:2024/06/07 01:47
有时候需要批量修改数据,如果循环修改单个,则会非常影响数据库连接量,比较好的方式就是拼接成一条sql,一次执行
/** * 批量更新 * @param [arr] $datas [要保存的数据集] * $data[] = array('id'=>1,'value'=>value1); $data[] = array('id'=>2,'value'=>value2); $data[] = array('id'=>3,'value'=>value3); * @param [string] $database_table_name [数据库表名] * @param [string] $primary_key [主键名] * @return [int] [成功修改的条数] */function dbSaveAll($datas, $database_table_name, $primary_key){ $sql = ''; //Sql $lists = []; //记录集$lists $pk = $primary_key;//获取主键 foreach ($datas as $data) { foreach ($data as $key=>$value) { if($pk===$key){ $ids[]=$value; }else{ $lists[$key].= sprintf("WHEN %u THEN '%s' ",$data[$pk],$value); } } } foreach ($lists as $key => $value) { $sql.= sprintf("`%s` = CASE `%s` %s END,",$key,$pk,$value); } $sql = sprintf('UPDATE __%s__ SET %s WHERE %s IN ( %s )',strtoupper($database_table_name),rtrim($sql,','),$pk,implode(',',$ids)); return M()->execute($sql);}调用
// 保存到数据库 $result = dbSaveAll($vote_projects, 'Vote_project', 'order_number'); if($result){ $this->success('写入成功!', __APP__ . '/Admin/Vote/get_all_pro'); } else { $this->error('数据已同步,无需重复写入'); }
阅读全文
0 0
- thinkphp 同时更新多条数据
- 同时更新多条数据
- 两个表同时更新多条数据
- oracle 同时添加和更新多条数据
- mysql 中实现多条数据同时更新
- 同时更新多条语句
- 更新多条数据
- JFinal同时操作多条数据
- Oracle中同时添加多条数据
- thinkphp更新数据库数据
- SQL更新多条数据
- MySql同时更新多条记录的方法
- mysql同时更新多条记录的同一个字段
- thinkphp更新和删除数据
- thinkphp 批量更新数据字段
- SqlServer触发器:同时删除多条数据,备份多条数据
- 在同一个数据集中同时更新多表..............
- thinkphp 自动接收表单数据进行更新
- 51nod 1052 最大m子段和 DP
- 基于matlab的图像处理-RGB色彩提取方法
- 飞狐教育java学习【第一天】知识点
- The connection to adb is down, and a severe error has occured.
- 197. Rising Temperature(Lettcode)
- thinkphp 同时更新多条数据
- 数据结构与算法分析(Java语言描述)(8)—— (随机)快速排序
- 淘淘商城商品下架
- RabbitMQ消息通信,一个生产者和多个消费者
- 操作系统:线程
- Visual Studio 2010打开高版本项目的解决方法
- 想要向一个数组中每隔两个字符插入一个“*”,为什么输出不了结果(Visual Studio 2017)
- PAT1064 朋友数(20)
- Oracle之分析函数