Thinkphp怎么批量更新数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Thinkphp怎么批量更新数据相关的知识,希望对你有一定的参考价值。

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);
参考技术A 并没有这个操作,批量插入就有,批量更新的话用循环去更新。

thinkPHP5 对数据库某一字段的数据批量增加2

使用setInc 发现对于数据库中不同数字不能批量增加,会报错,想问有什么好的方法解决?

参考技术A 我现在随机获得了几条数据比如array(2)[0]=>array(4)["id"]=>string(2)"15"["nameid"]=>string(8)"zhangyub"["hunponame"]=>string(7)"绔犻奔b"["pinji"]=>string(1)"3"[1]=> 参考技术B 拼接原声sql或循环添加,推荐第一种运行效率高,内存站的少

以上是关于Thinkphp怎么批量更新数据的主要内容,如果未能解决你的问题,请参考以下文章

Thinkphp怎么批量更新数据

thinkphp对180万数据批量更新支持事务回滚

thinkphp update更新数据问题

thinkphp更新数据怎么添加条件?

thinkPHP5 对数据库某一字段的数据批量增加2

请问怎么在Thinkphp对数据进行修改的时候保存操作时间?