PHPexcel 导入import 数据到 mysql: mysql 查询数据是否存在, 如果存在返回id, 不存在, 插入返回id. 2) mysql_query , mysql_connect,

Posted cb_za

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHPexcel 导入import 数据到 mysql: mysql 查询数据是否存在, 如果存在返回id, 不存在, 插入返回id. 2) mysql_query , mysql_connect,相关的知识,希望对你有一定的参考价值。

 

一: 要求:

 

上面的图表 中的数据插入到 3张表中.

1)t_vide_warehourse 分类表:

 

此表中包含 一级分类 和二级分类.  二级分类是一级分类的子级.

 

2)t_video_info   包名表

 

 此表 管理  第一张表.   并且 只有 第二次分类 才可以有 包 名 .

一个二级分类下 可以  有多个包.

 

3)t_video_file  文件表.

 

 

 此表 关联 第二张表;   一个  包 下  可以 有多个文件.

 

-----------------------------------------------------------------------------------------------

情况1:

 

上面:   第二级分类 就是 [教育培训], 包名 是  [计算机培训],  文件名是 [android开发初级课程SQLite数据库介绍]

 

情况2:

 

 上面:  二级分类 名 是 [其他],  包名是 [Photoshop CS6一对一教程],  文件名是 [01-01 Photoshopcs6安装方法]

 

情况3:

这种分类是空白的 数据 ,就排除掉. 不插入到数据库.

 

 

二: 导入到数据库的主题文件.

因为一个excel文件包含了 17个sheet ,太大了. 所以我们一个一个sheet的导入.

----------------

目录结构:

 

 

 ----------------------------------

 

 1. file01.php

 

  1 <?php
  2     // ini_set (\'memory_limit\', \'-1\');
  3     /***************读取excel文件**************/
  4     require_once \'PHPExcel_1.8.0/Classes/PHPExcel/IOFactory.php\';
  5 
  6     // echo "停止运行!";
  7     // die;
  8 
  9 
 10     $execlName = \'01.xlsx\';
 11     $firstCateName = "计算机";
 12 
 13     // $execlName = \'02.xlsx\';
 14     // $firstCateName = "金融、会计";
 15 
 16     // $execlName = \'03.xlsx\';
 17     // $firstCateName = "就业创业";
 18 
 19     // $execlName = \'04.xlsx\';
 20     // $firstCateName = "学前教育";
 21 
 22     // $execlName = \'05.xlsx\';
 23     // $firstCateName = "烹饪";
 24 
 25     // $execlName = \'06.xlsx\';
 26     // $firstCateName = "电子商务";
 27 
 28     // $execlName = \'07.xlsx\';
 29     // $firstCateName = "党政“两学一做”";
 30 
 31     // $execlName = \'08.xlsx\';
 32     // $firstCateName = "美术";
 33 
 34     // $execlName = \'09.xlsx\';
 35     // $firstCateName = "体育锻炼";
 36 
 37     // $execlName = \'10.xlsx\';
 38     // $firstCateName = "英语学习";
 39 
 40     // $execlName = \'11.xlsx\';
 41     // $firstCateName = "物联网";
 42 
 43     // $execlName = \'12.xlsx\';
 44     // $firstCateName = "个人提升";
 45 
 46     // $execlName = \'13.xlsx\';
 47     // $firstCateName = "国学";
 48 
 49     // $execlName = \'14.xlsx\';
 50     // $firstCateName = "影视";
 51 
 52     // $execlName = \'15.xlsx\';
 53     // $firstCateName = "音乐";
 54 
 55     // $execlName = \'16.xlsx\';
 56     // $firstCateName = "艺术修养";
 57 
 58     // $execlName = \'17.xlsx\';
 59     // $firstCateName = "养生";
 60 
 61 
 62 
 63 
 64 
 65     $reader = PHPExcel_IOFactory::createReader(\'Excel2007\'); //设置以Excel5格式(Excel97-2003工作簿)
 66     $objPHPExcel = $reader->load($execlName); // 载入excel文件
 67     $objWorksheet = $objPHPExcel->getSheet(0); // 读取第一個工作表
 68     $highestRow = $objWorksheet->getHighestRow(); // 取得总行数
 69     // $highestColumm = $objWorksheet->getHighestColumn(); // 取得总列数
 70 
 71     $highestColumm = \'K\'; // 取得总列数
 72 
 73 
 74     // echo \'总行数\'.$highestRow."总列数:".$highestColumm;
 75 
 76     /************ 循环读取每个单元格的数据 *********************/
 77 
 78 
 79     //行数是以第2行开始: A2,B2,C2....----> A10,B10,C10...----->
 80     for ($row = 2; $row <= $highestRow; $row++)
 81     {
 82         for ($column = \'A\'; $column <= $highestColumm; $column++)
 83         {//列数是以A列开始
 84 
 85 
 86             //取得一个单元格的值
 87             $cell = $objWorksheet->getCell($column.$row)->getValue();
 88             //富文本对象 转为 字符串
 89             if($cell instanceof PHPExcel_RichText)
 90             {
 91                 $cell = $cell->__toString();
 92             }
 93 
 94 
 95             //$oneData 是一条记录
 96             $oneData[] = $cell;
 97 
 98         }
 99 
100         //$data 是多条记录
101         $data[] = $oneData;
102         //清空原来的一条记录
103         unset($oneData);
104     }
105 
106     //上面取出$data是初始数据,还需要进行处理
107     //
108 
109 
110     // 去除 没有 分类的数据
111     foreach ($data as $key => $value)
112     {
113         if(empty($value[2]))
114         {
115             unset($data[$key]);
116         }
117     }
118 
119     // echo "<pre>";
120     // print_r($data);
121 
122 
123 
124 
125     //1: 添加一级分类, 二级分类, 包名:
126     foreach ($data as $k => $v)
127     {
128         //一级分类:
129         $v[0] = $firstCateName;
130 
131         $arr = explode(\'->\', $v[2]);
132 
133         if (count($arr) == 1)
134         {
135             //二级分类:
136             $v[1] = \'其他\';
137 
138             //包名:
139         }
140         else
141         {
142             //二级分类:
143             $v[1] = $arr[1];
144 
145             //包名:
146             $v[2] = $arr[2];
147         }
148 
149 
150 
151         $data1[] = $v;
152     }
153 
154     // echo "<pre>";
155     // print_r($data);
156     // print_r($data1);
157 
158 
159     //2: 获取 一级分类id; 二级分类id, 包id; 如果没有, 就插入返回的id
160     include_once \'test.php\';
161 
162     foreach ($data1 as $k => $v)
163     {
164         //1: 插入一级分类:
165         $firstCateName = $v[0];
166         $firstCateId = insertFrist($firstCateName);
167 
168         //2: 插入二级分类:
169         $secondCateName = $v[1];
170         $secondCateId = insertSecond($secondCateName, $firstCateId);
171 
172         //3: 插入info表: 包名:
173         $baoName = $v[2];
174         $path = \'/Course/CourseImage/\'.$v[5];
175         $infoId = insertInfo($baoName, $path, $secondCateId);
176 
177         //4: 插入文件:
178         $fileName = $v[3];
179         $imagePath = \'/Course/CourseImage/\'.$v[5];
180         $keywords = $v[6];
181         $fileType = substr($v[4],strrpos($v[4],\'.\')+1);
182         $filePath = \'/files/video/\'.$v[4];
183         insertFile($infoId, $fileName, $imagePath, $keywords, $fileType, $filePath);
184 
185     }
186 
187 
188     echo $firstCateName. \'导入完毕!\';
189 
190 
191 
192 
193 
194 
195 
196 
197 
198 
199 
200 
201 
202     /*******************函数**********************/
203 
204 
205 
206 
207 
208  ?>

 

注意:

因为格式是 .xlsx  所以 这里是 Excel2007 , 不是 Excel5

 

 

 

 2. test.php

插入数据库函数.

 

  1 <?php
  2 
  3 
  4 
  5 
  6 
  7     // var_dump(insertFrist(\'英语1\'));
  8 
  9     // var_dump(insertSecond(\'英语1-1\', 153309));
 10     // var_dump(insertSecond(\'英语1-2\', 153309));
 11     // var_dump(insertSecond(\'测试\', 153309));
 12 
 13     // var_dump(insertFrist(\'英语2\'));
 14     // var_dump(insertSecond(\'测试\', 153313));
 15 
 16     // var_dump(insertInfo(\'包3\', \'/coure/test/01.png\',153314));
 17     // var_dump(insertInfo(\'包3\', \'/coure/test/01.png\',153315));
 18     //
 19     // var_dump(insertFile(111, \'测试文件2\', \'/course/test/01.jpg\', \'haha, gest,test\', \'flv\', \'/course/video/01.flv\'));
 20 
 21     /*******************函数**********************/
 22 
 23 
 24     function insertFrist($firstCateName)
 25     {
 26 
 27         $firstCateName = trim($firstCateName);
 28 
 29         $dbhost = \'127.0.0.1\';  // mysql服务器主机地址
 30         $dbuser = \'root\';            // mysql用户名
 31         $dbpass = \'\';          // mysql用户名密码
 32         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
 33         if(! $conn )
 34         {
 35             die(\'Could not connect: \' . mysql_error());
 36         }
 37 
 38         mysql_select_db(\'testvideo\', $conn);
 39         // 设置编码,防止中文乱码
 40         mysql_query("set names utf8", $conn);
 41 
 42         $sql = "SELECT * FROM t_vide_warehourse WHERE RW_NAME = \'" .$firstCateName. "\' AND RW_PARENT_ID = 0 ";
 43         $result = mysql_query( $sql, $conn );
 44         if(! $result )
 45         {
 46           die(\'Could not get data: \' . mysql_error());
 47         }
 48         else
 49         {
 50             $num = mysql_num_rows($result);
 51 
 52             if ($num == 0)
 53             {
 54                 $sql = "INSERT INTO t_vide_warehourse (RW_NAME, RW_PARENT_ID) VALUES (\'" .$firstCateName. "\', 0)";
 55                 if (mysql_query($sql, $conn)) {
 56                     return  mysql_insert_id();
 57                 }else{
 58                     echo "插入一级出错". mysql_error();
 59                 }
 60             }
 61             else
 62             {
 63                 while ($row = mysql_fetch_array($result) )
 64                 {
 65                     return $row["VIDEO_RW_ID"];
 66                 }
 67             }
 68 
 69         }
 70 
 71 
 72         //查询
 73         mysql_close($conn);
 74     }
 75 
 76 
 77     function insertSecond($secondCateName, $firstCateId)
 78     {
 79 
 80         $secondCateName = trim($secondCateName);
 81 
 82         $dbhost = \'127.0.0.1\';  // mysql服务器主机地址
 83         $dbuser = \'root\';            // mysql用户名
 84         $dbpass = \'\';          // mysql用户名密码
 85         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
 86         if(! $conn )
 87         {
 88             die(\'Could not connect: \' . mysql_error());
 89         }
 90 
 91         mysql_select_db(\'testvideo\', $conn);
 92         // 设置编码,防止中文乱码
 93         mysql_query("set names utf8", $conn);
 94 
 95         $sql = "SELECT * FROM t_vide_warehourse WHERE RW_NAME = \'" .$secondCateName. "\' AND RW_PARENT_ID = $firstCateId ";
 96         $result = mysql_query( $sql, $conn );
 97         if(! $result )
 98         {
 99           die(\'Could not get data: \' . mysql_error());
100         }
101         else
102         {
103             $num = mysql_num_rows($result);
104 
105             if ($num == 0)
106             {
107                 $sql = "INSERT INTO t_vide_warehourse (RW_NAME, RW_PARENT_ID) VALUES (\'" .$secondCateName. "\', $firstCateId)";
108                 if (mysql_query($sql, $conn)) {
109                     return  mysql_insert_id();
110                 }else{
111                     echo "插入二级级出错". mysql_error();
112                 }
113             }
114             else
115             {
116                 while ($row = mysql_fetch_array($result) )
117                 {
118                     return $row["VIDEO_RW_ID"];
119                 }
120             }
121 
122         }
123 
124 
125         //查询
126         mysql_close($conn);
127     }
128 
129     function insertInfo($baoName, $path, $secondCateId)
130     {
131 
132         $baoName = trim($baoName);
133         $path = trim($path);
134 
135         $dbhost = \'127.0.0.1\';  // mysql服务器主机地址
136         $dbuser = \'root\';            // mysql用户名
137         $dbpass = \'\';          // mysql用户名密码
138         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
139         if(! $conn )
140         {
141             die(\'Could not connect: \' . mysql_error());
142         }
143 
144         mysql_select_db(\'testvideo\', $conn);
145         // 设置编码,防止中文乱码
146         mysql_query("set names utf8", $conn);
147 
148         $sql = "SELECT * FROM t_video_info WHERE VIDEO_TITLE = \'" .$baoName. "\' AND RW_ID = $secondCateId ";
149         $result = mysql_query( $sql, $conn );
150         if(! $result )
151         {
152           die(\'Could not get data: \' . mysql_error());
153         }
154         else
155         {
156             $num = mysql_num_rows($result);
157 
158             if ($num == 0)
159             {
160                 $sql = "INSERT INTO t_video_info (VIDEO_TITLE,PATH, RW_ID) VALUES (\'" .$baoName. "\', \'" .$path. "\', $secondCateId)";
161                 if (mysql_query($sql, $conn)) {
162                     return  mysql_insert_id();
163                 }else{
164                     echo "插入info出错". mysql_error();
165                 }
166             }
167             else
168             {
169                 while ($row = mysql_fetch_array($result) )
170                 {
171                     return $row["VIDEO_ID"];
172                 }
173             }
174 
175         }
176 
177 
178         //查询
179         mysql_close($conn);
180     }
181 
182     function insertFile($infoId, $fileName, $imagePath, $keywords, $fileType, $filePath)
183     {
184 
185         $fileName = trim($fileName);
186         $imagePath = trim($imagePath);
187         $keywords = trim($keywords);
188         $fileType = trim($fileType);
189         $filePath = trim($filePath);
190 
191         $dbhost = \'127.0.0.1\';  // mysql服务器主机地址
192         $dbuser = \'root\';            // mysql用户名
193         $dbpass = \'\';          // mysql用户名密码
194         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
thinkphp3.2和phpexcel导入

TP3.2加载外部PHPexcel类,实现导入和导出

PHP导出excel信息表格

tp5做的excel导入(用的PHPexcel类),有缺陷2007与2003只能二选一

PHP读取Excel数据写入数据库(包含图片和文字)

PHPExcel将Excel数据导入数据库