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

一: 要求:

上面的图表 中的数据插入到 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);
195         if(! $conn )
196         {
197             die(‘Could not connect: ‘ . mysql_error());
198         }
199
200         mysql_select_db(‘testvideo‘, $conn);
201         // 设置编码,防止中文乱码
202         mysql_query("set names utf8", $conn);
203
204         $sql = "INSERT INTO t_video_file (VIDEO_ID, FILE_NAME, IMAGEPATH, KEYWORDS,  FILE_TYPE, FILE_PATH) VALUES ($infoId, ‘" .$fileName. "‘, ‘" .$imagePath. "‘, ‘" .$keywords. "‘, ‘" .$fileType. "‘, ‘" .$filePath. "‘)";
205
206         // echo $sql;
207
208         if (mysql_query($sql, $conn)) {
209             return  mysql_insert_id();
210         }else{
211             echo "插入文件出错". mysql_error();
212         }
213
214
215
216
217
218
219         //查询
220         mysql_close($conn);
221     }
222
223
224
225
226  ?>

这里4个函数:

1) insertFrist  给 第一张表插入 第一级分类, 如果重复,返回已有id ; 不重复, 插入,返回新的id;

2)insertSecond  给第一张表 插入 二级分类, 如果重复, 返回已有id; 不重复, 插入,返回新的id;

3)insertInfo 给第二张表插入 数据,   如果重复, 返回已有id; 不重复, 插入,返回新的id;

4)insertFile 给第三张宝插入数据,  对于文件 ,不考虑文件名是否重复.

时间: 2024-11-18 04:00:26

PHPexcel 导入import 数据到 mysql: mysql 查询数据是否存在, 如果存在返回id, 不存在, 插入返回id. 2) mysql_query , mysql_connect, mysql_select_db, mysql_error, mysql_num_rows,mysql_close的相关文章

解决mysql控制台查询数据乱码的问题,有图有真相

在mysql  控制台当 当为gbk的时候查询的数据是汉字,假设不是则为乱码.  set  names  gbk;  那么查询出来的数据则为汉字 解决mysql控制台查询数据乱码的问题,有图有真相,布布扣,bubuko.com

如何实现MySQL随机查询数据与MySQL随机更新数据?

以下的文章主要介绍的是MySQL随机选取数据,对实现MySQ随机查询数据与MySQ随机更新数据的实际操作步骤的描述,以及对其实际操作中所要用到的语句的描述,以下就是对其具体操作步骤的描述. MySQL随机查询数据 以前在群里讨论过这个问题,比较的有意思.mysql的语法真好玩.他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询.翻了手册,找到了下面这个语句,可以完成任务了. SELECT * FROM table_name ORDER BY rand() LIMIT 5; MySQ

在python中连接mysql和查询数据

1 连接mysql import pymysql.cursors# 导入pymysql包# 连接数据库 connection = pymysql.connect(host = "localhost", #host是要连接的数据库的IP地址 user = "eric", #user是登陆的账号名,root是最高权限账号 password = "123456", #user账号的密码 db = "45", #需要连接的数据库 ch

oracle/mysql 将查询数据导出到文件中

一.将oracle 查询的数据导入到一个文本文件中方法一 :通过sql developer 工具导出到xls表中方法二:通过客户端sqlplus 到一个临时txt文件中再处理着重讲方法二(在使用场景下方便.快捷)SQL>spool d:sqlbak.txt;SQL>select * from table where a>x;SQL>spool off;这样刚查询的数据就好在d盘下的 sqlbak.txt 文件中,linux下同理: spool /tmp/sqlbak.txt 二.

mysql 分组查询数据

今天项目BOSS提了个sql语句需求,我听得稀里糊涂,没办法,一步步讨论.实践,最终搞定. 先上建表语句: 1 /* 2 Navicat MySQL Data Transfer 3 4 Source Server : localhost_3306 5 Source Server Version : 50623 6 Source Host : localhost:3306 7 Source Database : demo 8 9 Target Server Type : MYSQL 10 Targ

Mysql存储过程查询数据插入别的表里。

DELIMITER// CREATE PROCEDURE setRoomManger2() BEGIN DECLARE roomids VARCHAR(32); DECLARE done INT DEFAULT 0; DECLARE cur CURSOR FOR SELECT roomid FROM nst_t_room; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN cur; FETCH NEXT FROM c

MongoDB数据不一致导致的查询数据异常

我这里视查询的state为0,前面几条数据的state却不为1,解决办法是修复数据. db.repairDatabase() 至于导致数据不一致的原因,我还不太清楚,经过多方面资料查询 可能是在程序中,链接数据库是未在安全模式下操作数据库 下面是安全模式下链接数据库操作数据库 MongoClient client = new MongoClient(); client.setWriteConcern(WriteConcern.SAFE);

Hibernate删除数据后,再查询数据依然存在的解决办法

删除数据后,重新查询了数据库,DB中记录已经删除了,但是数据依然能查询到,网上都说是Hibernate的缓冲问题. 我对session进行了clear,flush,并且在事务和查询中都对session进行了关闭操作. 但问题总是解决不了. 后来看来这个帖子:http://stackoverflow.com/questions/12035517/hibernate-reading-function-shows-old-data 在Hibernate的配置文件添加了配置 <property name

mysql 基础篇-数据查询(1)

一.查询数据的概念:查询数据.筛选数据.确定数据的以什么样的格式输出. 二.数据查询的基本语句 1.基本语句格式 :select 字段列表  FROM 表或者视图  where 查询条件 2.1 单表查询的内容:查询所有字段.查询指定字段.查询指定记录.查询空值.多条件的查询 对查询结果进行排序. 2.1.1  查询所有字段,通过* 通配符来实现. SELECT * FROM fruits:(*代表所有的表中的字段,fruits是表名) 数据返回的时候按照定义表时候的顺序显示的. 一般不推荐使用