Thinkphp怎么批量更新数据

Thinkphp怎么批量更新数据,第1张

thinkphp批量更新数据可以参考如下三种方法:

方法一:

//批量修改 data二维数组 field关键字段 参考ci 批量修改函数 传参方式

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($table_name)->execute($sql)

return $res

}

//测试

function test(){

$update_array=array()

for ($i=2$i <7 $i++) {

$data=array()

$data['id']=$i

$data['memeber_type']=2

$data['memeber_type_state']=1

$update_array[]=$data

}

$res=$this->batch_update('yl_member',$update_array,id)

var_dump($res)

}

$data=array() //创建临时变量用以存储数据

$length=count($你的array名['cwidth']) //数你有多少行数据

for($i=0$i<=$length$i++){ //循环

$data[$i]['cwidth']=$你的array名['cwidth']

$data[$i]['cheight']=$你的array名['cheight']

}

出来的数据就像是这样:

array(2){

[0]=>array(2){

['cwidth']=>string(5) "593px"

['cheight']=>string(5) "203px"

}

[1]=>array(2){

['cwidth']=>string(5) "598px"

['cheight']=>string(5) "111px"

}

}

然后再用$db->add($data)插入数据


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9411800.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存