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();
}