php+mysql批量更新数据
浏览量:395
每一个PHP开发工程师都会遇见一下更新很多数据的时候,现在福利来了,我也遇见了一个批量更新数据时候,
然后自己封装了一个方法,但是更新的格式需要确定一下
array(1) { [21]=> array(3) { ["ranking"]=> string(14) "WHEN 21 THEN 1" ["last_ranking"]=> string(14) "WHEN 21 THEN 1" ["modify_time"]=> string(23) "WHEN 21 THEN 1509616809" } }
php批量更新mysql的方法:
/** * 批量更新数据 * @param $data 要分割的数据 * @param $table 表名字 * @param int $len 分割的长度 * @return array * author :lianghuiju * function_name : moreUpdate * description : */ function moreUpdate($data,$table,$len=50){ $idArray = array(); $tmp1Array = array(); $tmp2Array = array(); $tmp3Array = array(); $field1 = 'ranking'; $field2 = 'last_ranking'; $field3 = 'modify_time'; $sql = array(); $str = "UPDATE $table SET %s = CASE id %s END, %s = CASE id %s END, %s = CASE id %s END WHERE id IN (%s)"; foreach($data as $key=>$val){ $idArray[] = $key; $tmp1Array[] = $val[$field1]; $tmp2Array[] = $val[$field2]; $tmp3Array[] = $val[$field3]; } $idArray = array_chunk($idArray,$len); $tmp1Arrays = array_chunk($tmp1Array,$len); $tmp2Arrays = array_chunk($tmp2Array,$len); $tmp3Arrays = array_chunk($tmp3Array,$len); foreach($tmp1Arrays as $key=>$val){ $ids = implode(',',$idArray[$key]); $tmp1 = implode(' ',$tmp1Arrays[$key]); $tmp2 = implode(' ',$tmp2Arrays[$key]); $tmp3 = implode(' ',$tmp3Arrays[$key]); $sql[] = sprintf($str,$field1,$tmp1,$field2,$tmp2,$field3,$tmp3,$ids); } return $sql; }
神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。