判断上传数据库内容是否重复

思路:上传文件写方法时先判断它是否是post方法传送,然后上传文件。


代码如下:

public function upload(){
		if(IS_GET){
			$this->display();
			// exit;
		}else{
		$upload = new \Think\Upload();// 实例化上传类
		$upload->maxSize = 0 ;// 设置附件上传大小,文件上传的最大文件大小(以字节为单位),0为不限大小
		$upload->exts = array('csv');// 设置附件上传类型,上传的文件的类型
		$upload->rootPath = './Public/Upload/'; // 设置附件上传根目录
		$upload->savePath = ''; // 设置附件上传(子)目录
		// 上传文件
		$info = $upload->upload();
		// dump($info);
		// $model=M('student');
		if(!$info) {// 上传错误提示错误信息
		$this->error($upload->getError());
		}else{// 上传成功 获取上传文件信息
		// 	foreach($info as $file){
		// 	echo $file['savepath'].$file['savename'];
		// }
			$this->import($upload->rootPath.$info['file']['savepath'].$info['file']['savename']);
         // $this->success('上传成功');
	  }
     }
	}



   2.如何判断上传文件的信息是否重复,首先要从文件中获取数据,如果存在则重复,不执行添加代码,如果不存在,则添加到数据库中。下面是一段判断学号上传是否重复的代码,上传成功执行这段代码即可


代码如下:

// 转换格式
    public function import($file){
    	// echo $file;
    	// exit;
    	// $file="./Public/Upload/2018-03-23/5ab4431d120ae.csv";
    	//检测编码格式
    	$encoding=detect_encoding($file);


    	//如果不是utf-8格式,则转换为utf8
    	if($encoding!='UTF-8'){
    		$contens=file_get_contents($file);
    		$contens=mb_convert_encoding($contens,'utf-8',$encoding);
    		file_put_contents($file, $contens);
    	}
    	$fp=fopen($file, 'r');//打开文件,
    	if($fp){
    		$fields=array('no','name','sex');
    		$model=M('newstudent');


    		$arrNo=$model->getField('no',true);//获取表单里的学号,true代表获取全部的学号,如果不写就获取一个
    		// dump($arrNo);
    		// exit;
    		$arr=array();//创建一个数组
    		
    		while(($row=fgetcsv($fp,1000,","))!==false){
    			$row=array_combine($fields, $row);
    			  
    			$ret=in_array($row['no'], $arrNo);//判断是否存在$row['no']中,存在为真
    			// dump($ret);
    			// exit;
               if($ret==false){//如果没有就进
               	$arrNo[]=$row['no'];
                $arr[]=$row;
                $file= './Public/Download/demo.log';//日志文件路径
                $e.= "导入成功";
                file_put_contents($file, $e);




               }else{//有就输出
               	$file= './Public/Download/demo.log';
                $e.= $row['no']."学号已存在".PHP_EOL;
                // echo "";
                file_put_contents($file, $e);


               	// echo $row['no'].'已存在'.'<br>';
               	continue;
               	
               }
           }
    			if(count($arr)==1000){
    				$model->addAll($arr);
    				unset($arr);
    			}
    			// dump($row);
    		}
    		   
    		if(count($arr)>0){
    				$model->addAll($arr);
    			}
    		// $this->show('添加成功','utf8');
    		$this->download();
    	
    }



猜你喜欢

转载自blog.csdn.net/spp_ty/article/details/79738294
今日推荐