搜索
系统检测到您的用户名不符合规范:

tp3.2 数据批量-更新封装类

浏览:4174 发布日期:2017年08月02日 分类:业务逻辑 关键字: PHP批量更新
tp3.2 数据更新是没有封装类的,自己琢磨了一下拼接了一个原声mysql语句 封装了一下 大家有什么建议可以留言(*^__^*) 嘻嘻......
1. 在模块下的Common 文件夹下建 function.php

<?php
/*
批量更新
@ $table_name 表名全名
@ data 更新的数据 二位数组
@ 返回执行行数
@ 老-猫 2017年08月02日
*/
function batch_update($table_name='',$data=array(),$field=''){

if(!$table_name||!$data||!$field){
return false;
}else{
$sql='UPDATE '.$table_name;
}

$con=array();
$con_sql=array();
$fields=array();

foreach ($data as $key => $value) {

$x=0;
foreach ($value as $k => $v) {

if($k!=$field&&!$con[$x]&&$x==0){$con[$x]=" set {$k} = (CASE {$field} ";}

elseif($k!=$field&&!$con[$x]&&$x>0){$con[$x]=" {$k} = (CASE {$field} ";}

if($k!=$field){
$temp=$value[$field];
$con_sql[$x].= " WHEN '{$temp}' THEN '{$v}' ";
$x++;
}
}
$temp=$value[$field];

if(!in_array($temp,$fields)){$fields[]=$temp;}
}
$num=count($con)-1;

foreach ($con as $key => $value) {

foreach ($con_sql as $k => $v) {

if($k==$key&&$key<$num){$sql.=$value.$v.' end),';}

elseif($k==$key&&$key==$num){$sql.=$value.$v.' end)';}
}
}
$str=implode(',',$fields);
$sql.=" where {$field} in({$str})";
$res = M()->execute($sql);
//$res =$sql;
return $res;
}


2. 在控制器中测试

/*测试 批量更新 放在控制器中
tes_ 表前缀*/
/*public function saveAll_test(){
$update_array=array();
for ($i=1; $i <6 ; $i++) {
$data=array();
$data['id']=$i;
$data['agent_name']='说的什么';
$data['adderss'] = '我是收货地址请查看';
$update_array[]=$data;
}
dump($update_array);
$sql=batch_update('tes_agent_ship',$update_array,id);

//dump($res);

// 拼接后的语句
// UPDATE tes_agent_ship set agent_name = (CASE id WHEN '1' THEN '说的什么啊1' WHEN '2' THEN '说的什么啊2' end) where id in(1,2)

}*/
收藏
wangpeishi
积分:643 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /