最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

thinkphp 批量更新数据字段

来源:动视网 责编:小采 时间:2020-11-03 18:15:58
文档

thinkphp 批量更新数据字段

thinkphp 批量更新数据字段:/* * @param $saveWhere :想要更新主键ID数组 * @param $saveData :想要更新的ID数组所对应的数据 * @param $tableName : 想要更新的表明 * @param $saveWhere : 返回更新成功后的主键ID数组 * */ public function saveAl
推荐度:
导读thinkphp 批量更新数据字段:/* * @param $saveWhere :想要更新主键ID数组 * @param $saveData :想要更新的ID数组所对应的数据 * @param $tableName : 想要更新的表明 * @param $saveWhere : 返回更新成功后的主键ID数组 * */ public function saveAl


  1. /*

  2.      *  @param $saveWhere :想要更新主键ID数组

  3.      *  @param $saveData    :想要更新的ID数组所对应的数据

  4.      *  @param $tableName  : 想要更新的表明

  5.      *  @param $saveWhere  : 返回更新成功后的主键ID数组

  6.      * */

  7.     public function saveAll($saveWhere,&$saveData,$tableName){

  8.         if($saveWhere==null||$tableName==null)

  9.             return false;

  10.         //获取更新的主键id名称

  11.         $key = array_keys($saveWhere)[0];

  12.         //获取更新列表的长度

  13.         $len = count($saveWhere[$key]);

  14.         $flag=true;

  15.         $model = isset($model)?$model:M($tableName);

  16.         //开启事务处理机制

  17.         $model->startTrans();

  18.         //记录更新失败ID

  19.         $error=[];

  20.         for($i=0;$i<$len;$i++){

  21.             //预处理sql语句

  22.             $isRight=$model->where($key.'='.$saveWhere[$key][$i])->save($saveData[$i]);

  23.             if($isRight==0){

  24.                 //将更新失败的记录下来

  25.                 $error[]=$i;

  26.                 $flag=false;

  27.             }

  28.             //$flag=$flag&&$isRight;

  29.         }

  30.         if($flag ){

  31.             //如果都成立就提交

  32.             $model->commit();

  33.             return $saveWhere;

  34.         }elseif(count($error)>0&count($error)<$len){

  35.             //先将原先的预处理进行回滚

  36.             $model->rollback();

  37.             for($i=0;$i<count($error);$i++){

  38.                 //删除更新失败的ID和Data

  39.                 unset($saveWhere[$key][$error[$i]]);

  40.                 unset($saveData[$error[$i]]);

  41.             }

  42.             //重新将数组下标进行排序

  43.             $saveWhere[$key]=array_merge($saveWhere[$key]);

  44.             $saveData=array_merge($saveData);

  45.             //进行第二次递归更新

  46.             $this->saveAll($saveWhere,$saveData,$tableName);

  47.             return $saveWhere;

  48.         }

  49.         else{

  50.             //如果都更新就回滚

  51.             $model->rollback();

  52.             return false;

  53.         }

  54.     }

在测试方法中调用

  1. public function test(){

  2.         //要更新的数据表的主键数组

  3.         $where['ID']=array(70,73,74,80,83);

  4.        //ID主键数组对应的待更新数据

  5.         $save=array(

  6.           array('School'=>'DK Univisity01','isExport'=>0),

  7.           array('School'=>'DK Univisity02','isExport'=>0),

  8.           array('School'=>'DK Univisity03','isExport'=>0),

  9.           array('School'=>'DK Univisity04','isExport'=>0),

  10.           array('School'=>'','isExport'=>0),

  11.          // array('School'=>'  Univisity05','isExport'=>0),

  12.         );

  13.         $f=$this->saveAll($where,$save,'want');

  14.         if(count($f['ID'])>0){

  15.            //返回更新成功的ID数组

  16.             echo "This is success :</br>";

  17.             dump($f);

  18.             echo 'ok';

  19.         }else{

  20.            //更新失败操作

  21.             echo "This is failed :</br>";

  22.             dump($f);

  23.             echo 'error';

  24.         }

  25.     }

文档

thinkphp 批量更新数据字段

thinkphp 批量更新数据字段:/* * @param $saveWhere :想要更新主键ID数组 * @param $saveData :想要更新的ID数组所对应的数据 * @param $tableName : 想要更新的表明 * @param $saveWhere : 返回更新成功后的主键ID数组 * */ public function saveAl
推荐度:
标签: 批量 数据 php
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top