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
<?php
// ini_set ('memory_limit', '-1');
/***************读取excel文件**************/
require_once 'PHPExcel_1.8.0/Classes/PHPExcel/IOFactory.php'; // echo "停止运行!";
// die; $execlName = '01.xlsx';
$firstCateName = "计算机"; // $execlName = '02.xlsx';
// $firstCateName = "金融、会计"; // $execlName = '03.xlsx';
// $firstCateName = "就业创业"; // $execlName = '04.xlsx';
// $firstCateName = "学前教育"; // $execlName = '05.xlsx';
// $firstCateName = "烹饪"; // $execlName = '06.xlsx';
// $firstCateName = "电子商务"; // $execlName = '07.xlsx';
// $firstCateName = "党政“两学一做”"; // $execlName = '08.xlsx';
// $firstCateName = "美术"; // $execlName = '09.xlsx';
// $firstCateName = "体育锻炼"; // $execlName = '10.xlsx';
// $firstCateName = "英语学习"; // $execlName = '11.xlsx';
// $firstCateName = "物联网"; // $execlName = '12.xlsx';
// $firstCateName = "个人提升"; // $execlName = '13.xlsx';
// $firstCateName = "国学"; // $execlName = '14.xlsx';
// $firstCateName = "影视"; // $execlName = '15.xlsx';
// $firstCateName = "音乐"; // $execlName = '16.xlsx';
// $firstCateName = "艺术修养"; // $execlName = '17.xlsx';
// $firstCateName = "养生"; $reader = PHPExcel_IOFactory::createReader('Excel2007'); //设置以Excel5格式(Excel97-2003工作簿)
$objPHPExcel = $reader->load($execlName); // 载入excel文件
$objWorksheet = $objPHPExcel->getSheet(0); // 读取第一個工作表
$highestRow = $objWorksheet->getHighestRow(); // 取得总行数
// $highestColumm = $objWorksheet->getHighestColumn(); // 取得总列数 $highestColumm = 'K'; // 取得总列数 // echo '总行数'.$highestRow."总列数:".$highestColumm; /************ 循环读取每个单元格的数据 *********************/ //行数是以第2行开始: A2,B2,C2....----> A10,B10,C10...----->
for ($row = 2; $row <= $highestRow; $row++)
{
for ($column = 'A'; $column <= $highestColumm; $column++)
{//列数是以A列开始 //取得一个单元格的值
$cell = $objWorksheet->getCell($column.$row)->getValue();
//富文本对象 转为 字符串
if($cell instanceof PHPExcel_RichText)
{
$cell = $cell->__toString();
} //$oneData 是一条记录
$oneData[] = $cell; } //$data 是多条记录
$data[] = $oneData;
//清空原来的一条记录
unset($oneData);
} //上面取出$data是初始数据,还需要进行处理
// // 去除 没有 分类的数据
foreach ($data as $key => $value)
{
if(empty($value[2]))
{
unset($data[$key]);
}
} // echo "<pre>";
// print_r($data); //1: 添加一级分类, 二级分类, 包名:
foreach ($data as $k => $v)
{
//一级分类:
$v[0] = $firstCateName; $arr = explode('->', $v[2]); if (count($arr) == 1)
{
//二级分类:
$v[1] = '其他'; //包名:
}
else
{
//二级分类:
$v[1] = $arr[1]; //包名:
$v[2] = $arr[2];
} $data1[] = $v;
} // echo "<pre>";
// print_r($data);
// print_r($data1); //2: 获取 一级分类id; 二级分类id, 包id; 如果没有, 就插入返回的id
include_once 'test.php'; foreach ($data1 as $k => $v)
{
//1: 插入一级分类:
$firstCateName = $v[0];
$firstCateId = insertFrist($firstCateName); //2: 插入二级分类:
$secondCateName = $v[1];
$secondCateId = insertSecond($secondCateName, $firstCateId); //3: 插入info表: 包名:
$baoName = $v[2];
$path = '/Course/CourseImage/'.$v[5];
$infoId = insertInfo($baoName, $path, $secondCateId); //4: 插入文件:
$fileName = $v[3];
$imagePath = '/Course/CourseImage/'.$v[5];
$keywords = $v[6];
$fileType = substr($v[4],strrpos($v[4],'.')+1);
$filePath = '/files/video/'.$v[4];
insertFile($infoId, $fileName, $imagePath, $keywords, $fileType, $filePath); } echo $firstCateName. '导入完毕!'; /*******************函数**********************/ ?>
注意:

因为格式是 .xlsx 所以 这里是 Excel2007 , 不是 Excel5
2. test.php
插入数据库函数.
<?php
// var_dump(insertFrist('英语1'));
// var_dump(insertSecond('英语1-1', 153309));
// var_dump(insertSecond('英语1-2', 153309));
// var_dump(insertSecond('测试', 153309));
// var_dump(insertFrist('英语2'));
// var_dump(insertSecond('测试', 153313));
// var_dump(insertInfo('包3', '/coure/test/01.png',153314));
// var_dump(insertInfo('包3', '/coure/test/01.png',153315));
//
// var_dump(insertFile(111, '测试文件2', '/course/test/01.jpg', 'haha, gest,test', 'flv', '/course/video/01.flv'));
/*******************函数**********************/
function insertFrist($firstCateName)
{
$firstCateName = trim($firstCateName);
$dbhost = '127.0.0.1'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = ''; // mysql用户名密码
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('testvideo', $conn);
// 设置编码,防止中文乱码
mysql_query("set names utf8", $conn);
$sql = "SELECT * FROM t_vide_warehourse WHERE RW_NAME = '" .$firstCateName. "' AND RW_PARENT_ID = 0 ";
$result = mysql_query( $sql, $conn );
if(! $result )
{
die('Could not get data: ' . mysql_error());
}
else
{
$num = mysql_num_rows($result);
if ($num == 0)
{
$sql = "INSERT INTO t_vide_warehourse (RW_NAME, RW_PARENT_ID) VALUES ('" .$firstCateName. "', 0)";
if (mysql_query($sql, $conn)) {
return mysql_insert_id();
}else{
echo "插入一级出错". mysql_error();
}
}
else
{
while ($row = mysql_fetch_array($result) )
{
return $row["VIDEO_RW_ID"];
}
}
}
//查询
mysql_close($conn);
}
function insertSecond($secondCateName, $firstCateId)
{
$secondCateName = trim($secondCateName);
$dbhost = '127.0.0.1'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = ''; // mysql用户名密码
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('testvideo', $conn);
// 设置编码,防止中文乱码
mysql_query("set names utf8", $conn);
$sql = "SELECT * FROM t_vide_warehourse WHERE RW_NAME = '" .$secondCateName. "' AND RW_PARENT_ID = $firstCateId ";
$result = mysql_query( $sql, $conn );
if(! $result )
{
die('Could not get data: ' . mysql_error());
}
else
{
$num = mysql_num_rows($result);
if ($num == 0)
{
$sql = "INSERT INTO t_vide_warehourse (RW_NAME, RW_PARENT_ID) VALUES ('" .$secondCateName. "', $firstCateId)";
if (mysql_query($sql, $conn)) {
return mysql_insert_id();
}else{
echo "插入二级级出错". mysql_error();
}
}
else
{
while ($row = mysql_fetch_array($result) )
{
return $row["VIDEO_RW_ID"];
}
}
}
//查询
mysql_close($conn);
}
function insertInfo($baoName, $path, $secondCateId)
{
$baoName = trim($baoName);
$path = trim($path);
$dbhost = '127.0.0.1'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = ''; // mysql用户名密码
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('testvideo', $conn);
// 设置编码,防止中文乱码
mysql_query("set names utf8", $conn);
$sql = "SELECT * FROM t_video_info WHERE VIDEO_TITLE = '" .$baoName. "' AND RW_ID = $secondCateId ";
$result = mysql_query( $sql, $conn );
if(! $result )
{
die('Could not get data: ' . mysql_error());
}
else
{
$num = mysql_num_rows($result);
if ($num == 0)
{
$sql = "INSERT INTO t_video_info (VIDEO_TITLE,PATH, RW_ID) VALUES ('" .$baoName. "', '" .$path. "', $secondCateId)";
if (mysql_query($sql, $conn)) {
return mysql_insert_id();
}else{
echo "插入info出错". mysql_error();
}
}
else
{
while ($row = mysql_fetch_array($result) )
{
return $row["VIDEO_ID"];
}
}
}
//查询
mysql_close($conn);
}
function insertFile($infoId, $fileName, $imagePath, $keywords, $fileType, $filePath)
{
$fileName = trim($fileName);
$imagePath = trim($imagePath);
$keywords = trim($keywords);
$fileType = trim($fileType);
$filePath = trim($filePath);
$dbhost = '127.0.0.1'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = ''; // mysql用户名密码
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('testvideo', $conn);
// 设置编码,防止中文乱码
mysql_query("set names utf8", $conn);
$sql = "INSERT INTO t_video_file (VIDEO_ID, FILE_NAME, IMAGEPATH, KEYWORDS, FILE_TYPE, FILE_PATH) VALUES ($infoId, '" .$fileName. "', '" .$imagePath. "', '" .$keywords. "', '" .$fileType. "', '" .$filePath. "')";
// echo $sql;
if (mysql_query($sql, $conn)) {
return mysql_insert_id();
}else{
echo "插入文件出错". mysql_error();
}
//查询
mysql_close($conn);
}
?>
这里4个函数:
1) insertFrist 给 第一张表插入 第一级分类, 如果重复,返回已有id ; 不重复, 插入,返回新的id;
2)insertSecond 给第一张表 插入 二级分类, 如果重复, 返回已有id; 不重复, 插入,返回新的id;
3)insertInfo 给第二张表插入 数据, 如果重复, 返回已有id; 不重复, 插入,返回新的id;
4)insertFile 给第三张宝插入数据, 对于文件 ,不考虑文件名是否重复.
PHPexcel 导入import 数据到 mysql: mysql 查询数据是否存在, 如果存在返回id, 不存在, 插入返回id. 2) mysql_query , mysql_connect, mysql_select_db, mysql_error, mysql_num_rows,mysql_close的更多相关文章
- 如何实现MySQL随机查询数据与MySQL随机更新数据?
以下的文章主要介绍的是MySQL随机选取数据,对实现MySQ随机查询数据与MySQ随机更新数据的实际操作步骤的描述,以及对其实际操作中所要用到的语句的描述,以下就是对其具体操作步骤的描述. MySQL ...
- Python3操作MySQL,查询数据并保存到文件中
我们在测试过程中,可能需要到数据库中拉去一些数据,为从测试准备.比如最近在做接口性能测试的时候,就需要很多数据来支撑,所以就需要的数据库去查询数据,下面就是python3 查询 mysql 并且保存到 ...
- 分享:mysql 随机查询数据
在mysql中查询5条不重复的数据,使用以下: 1 SELECT * FROM `table` ORDER BY RAND() LIMIT 5 就可以了.但是真正测试一下才发现这样效率非常低.一个1 ...
- nodejs操作 mongoose(mongodb)和Sequelize(mysql)查询数据后添加新属性未生效
最近在着手koa时候,发现mongoose(mongodb)查询数据库后添加新属性,前端拿不到新属性问题, 然后测试了一下Sequelize(mysql),发现也有同样的问题存在.此时着手干! 1.1 ...
- MySQL 数据库查询数据,过滤重复数据保留一条数据---(MySQL中的row_number变相实现方法)
转自: http://www.maomao365.com/?p=10564 摘要: 下文讲述MySQL数据库查询重复数据时,只保留一条数据的方法 实现思路: 在MySQL数据库中没有row_numbe ...
- MySQL数据库——查询数据
增加数据: insert into "表名" values( '字段'',字段'); 或insert into '表名'( '字段'',字段') values( '字段'',字段 ...
- iOS开发之数据存取2-CoreData后台查询数据
注意:本人所讲的后台查询必须在使用CoreData时选择存储类型为“SQLite”,因为二进制或者XML存储方式会在打开的时候直接读到内存中. 1.CoreData数据后台查询出现的情况 CoreDa ...
- Mysql数据库查询数据文件大小
参考网站:https://zhidao.baidu.com/question/201227796936321525.html 用SQL命令查看Mysql数据库大小 要想知道每个数据库的大小的话,步骤如 ...
- 解决mysql控制台查询数据乱码的问题,有图有真相
在mysql 控制台当 当为gbk的时候查询的数据是汉字,假设不是则为乱码. set names gbk; 那么查询出来的数据则为汉字
随机推荐
- 【洛谷p1164】小A点菜
(……) 小A点菜[传送门] 上标签: (一个神奇的求背包问题方案总数的题) 核心算法: ;i<=n;i++) for(int j=m;j>=a[i];j--) f[j]+=f[j-a[i ...
- 基于jquery实现页面loading加载效果
实现loading 加载提示 ······ 透明遮罩 居中效果 具体代码如下: CSS样式部分: <style type="text/css"> .background ...
- Zookeeper浏览器工具和Eclipse插件
公司很多产品会使用zookeeper,比如Meta消息中间件,在测试的过程中,我们经常需要查询zookeeper里面的信息来精确定位问题.目前项目中有开发团队自己写的浏览器node-zk-browse ...
- Spring Cloud系列之Feign的常见问题总结
一.FeignClient接口,不能使用@GettingMapping 之类的组合注解 代码示例: @FeignClient("microservice-provider-user" ...
- 微信小程序页面无法跳转
推荐网址:https://www.jianshu.com/p/e56b55334585 1.无法跳转原因分析 要跳转的路径在app.js里未注册过或路径写错 要跳转的路径是否位于TabBar中 页 ...
- js 日期格式: UTC GMT 互相转换
//UTC 转指定格式日期 let date = '2018-03-07T16:00:00.000Z' console.log(moment(date).format('YYYY-MM-DD HH:m ...
- JBoss/WildFly 初步安装配置教程
1.下载 Redhat的JBoss与Oracle的Weblogic.IBM的WebSphere并称三大JAVA EE中间件. JBoss AS是JBoss的开源版本,JBoss EAP是JBoss的企 ...
- pyqt实现滑动开关
https://www.cnblogs.com/feiyangqingyun/p/6035633.html 根据Qt的实现,在PyQt上面实现了滑动开关的控件 import sys from PyQt ...
- windows7时间同步设置
1. 设置同步源 服务器修改为本车的104的ip地址,例如23车,手动输入 96.3.123.104 2. 设置同步周期. 注册表法 在“运行”框输入“Regedit”进入注册表编辑器 这种方法是通过 ...
- 蓝桥杯—BASIC-27 2n皇后问题(DFS)
问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后, 使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行. 同一列或 ...