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

浏览:4070 发布日期: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)

}*/
评论( 相关
后面还有条评论,点击查看>>