Column count doesn't match value count at row 2
这个错的意思呢,就是sql的列与值不匹配,就像这样
insert into table(column1,column2,column3) values(1,2)
我是在导入数据的时候出现这个错误的,那么原因是什么呢,
有的数据是在excel表的值是空白的,导入后读取的数据却是不存在的,那么这种情况下,对数据做好缺省是很好的解决办法
下面上代码 :
/**
* Notes: 先上传,后将文件处理
* User: Administrator
* Date: 2019-08-20 14:46
*/
public function import(){
if(IS_POST){
vendor("PHPExcel.PHPExcel"); //
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('xls','xlsx');// 设置附件上传类型
$upload->rootPath = './Uploads/'; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
// 上传文件
$info = $upload->upload();
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功
//上传文件的地址
$file_name = $upload->rootPath.
$info['import']['savepath'].$info['import']['savename'];
$objReader =\PHPExcel_IOFactory::createReader('Excel2007');
//加载文件内容,编码utf-8
$obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');
$excel_array=$obj_PHPExcel->getsheet(0)->toArray(); //转换为数组格式
array_shift($excel_array); //删除第一个数组(标题);
//数据处理
foreach($excel_array as $k=>$v) {
$data[$k]['id'] = $v[0];//id
$data[$k]['store_name'] = $v[1];//门店名称
$data[$k]['machine_code'] = $v[2]?:"";//机器码
$data[$k]['tel'] = $v[3]?:"";//前台电话
$data[$k]['contact'] = $v[4]?:"";//联系人
$data[$k]['contact_phone'] = $v[5]?:"";//联系人
//软件版本
switch ($v[6]){
case '房间版':
$reg_version = 1;
break;
case '房间尊享版':
$reg_version = 1;
break;
case '房间标准版':
$reg_version = 2;
break;
case '房间基础版':
$reg_version = 3;
break;
case '手牌版':
$reg_version = 4;
break;
case '手牌尊享版':
$reg_version = 4;
break;
case '手牌标准版':
$reg_version = 5;
break;
case '手牌基础版':
$reg_version = 6;
break;
}
$data[$k]['reg_version'] = $reg_version;
$data[$k]['nodeid'] = $v[7]?:"";
$data[$k]['is_qly'] = $v[8]=='已开通'?1:0;
$data[$k]['is_sms'] = $v[9]=='已开通'?1:0;
$data[$k]['is_kywy'] = $v[10]=='已开通'?1:0;
$data[$k]['is_autoback'] = $v[12]=='已开通'?1:0;
$dfm = explode('/',$v[13]);
if($dfm[2]){
$expired_date = $dfm[2]."-".$dfm[0].'-'.$dfm[1];
}
$expired_date= $expired_date?:$v[13];
$data[$k]['expired_date'] = $expired_date?:'';
$data[$k]['create_time'] = time();
$expired_date='';
}
//插入数据
try{
$success=M('Reginfo')->addAll($data);
if($success){
$this->success('上传成功!');
}else{
$this->success('失败!');
}
}catch (\Exception $e){
$this->success($e->getMessage());
}
}
}
$this->display();
}