php实现批量上传数据到数据库(.csv格式)的案例
author:一佰互联 2019-04-26   click:193

友情提示:上传数据的文档需要转化为.csv格式的文档

前端代码:

<form name="importForm" action="import.php" method="POST" enctype="multipart/form-data"> <input type="hidden" value="import_goods" name="file">   <table cellpadding="2" cellspacing="1" class="tb">     <tbody>     <tr>       <td width="200">选择批量上传文档:</td>       <td><input type="file" name="upfilename" id="upfilename" value=""></td>     </tr>     <tr>       <td colspan="2">         <input type="submit" name="submit" value="提交" class="btn">       </td>     </tr>     </tbody>   </table> </form> 

后端代码:import.php文件(这里只粘贴主要代码,具体实现方法需自己完成)

if(isset($_POST["submit"])){       stripos(PHP_OS, "WIN") !== false ? setlocale(LC_ALL, "") : setlocale(LC_ALL,"zh_CN.GBK");              $fext = substr($_FILES["upfilename"]["name"], strrpos($_FILES["upfilename"]["name"], ".") + 1);       if ($fext != "csv") {         die("请上传csv格式的文件",HTTP_REFERER);       }       $handle = @fopen($_FILES["upfilename"]["tmp_name"], "rb");          $i = 0;       $import_type = "";       if ($handle)       {         while($line_data = fgetcsv($handle, 4096, ","))         {           if ($i == 0) {             $import_type = trim($line_data[0]);             $i = 1;           } elseif (intval($line_data[0])) {             $line_list[] = $line_data;           }         }       }       //循环转换数据格式       foreach ($line_list as $i=> $v)       {         foreach ($v as $j=> $value)         {           $line_list[$i][$j] = iconv("GBK", "UTF-8//IGNORE",$line_list[$i][$j]);         }       }//编码转换              fclose($handle);        if(!empty($line_list))       {         // 登记号         $sn = array();         $top_catid = 0;         $name = "";         $func_name = "";         switch ($import_type) {           case "patent";           $top_catid = 5;           $name = "专利申请号";           $func_name = "deal_import_patent";           break;           case "trademark";           $top_catid = 4;           $name = "商标注册号";           $func_name = "deal_import_trademark";           break;           case "copyright";           $top_catid = 2185;           $name = "登记号";           $func_name = "deal_import_copyright";           break;           default:             die("上传文档未明确指定知产类型!");           break;         }         if ($import_type == "patent") {           foreach($line_list as $lkey => $lval) {             $lval[2] = trim($lval[2]);             if ($lval[2] == "专利技术") {               // 技术专利               if(!empty($lval[1])) {                 if(in_array($lval[1],$sn))                 {                   die("列表中序号为".$lval[0]."的知产的".$name.$lval[1]."与前面的出现重复!");//判断是否有重复的数据(根据自己所需判断)                 }                 $sn[] = trim($lval[1]);               } else {                 die("列表中序号为".$lval[0]."的知产的".$name."为空!");               }             } else {               // 非技术专利               $line_list[$lkey][1] = "";             }           }         } elseif ($import_type == "trademark") {           foreach($line_list as $lkey => $lval) {             if(!empty($lval[1])) {               if(in_array($lval[1],$sn))               {                 die("列表中序号为".$lval[0]."的知产的".$name."与前面的出现重复!");               }               $sn[] = $lval[1];             } else {               die("列表中序号为".$lval[0]."的知产的".$name."为空!");             }           }         }         if (!empty($sn)) {           $sql = "SELECT serial_number FROM " .$table_name. " WHERE top_catid = ".$top_catid." AND serial_number IN ("" .implode("","", $sn). "")";           $result = $goods_db->query($sql);           $r = $goods_db->fetch_array();           $exist = array();           foreach ($r as $k=>$v){             $exist[] = $v["serial_number"];           }                      if (!empty($exist)) die($name."为:".implode(",",$exist)."的知产已存在");//数据库中是否有相同的数据(根据自己所需判断)         }             // 调用处理函数         self::$func_name($line_list);//此时$line_list即为你上传文档的数据,数组格式,根据自己所需将数据导入数据库         die("批量导入完成!");       }            } 

.csv文档的格式为:

以上这篇php实现批量上传数据到数据库(.csv格式)的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持网页设计。