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导入