zoukankan      html  css  js  c++  java
  • 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 给第三张宝插入数据,  对于文件 ,不考虑文件名是否重复.

  • 相关阅读:
    Leetcode 191.位1的个数 By Python
    反向传播的推导
    Leetcode 268.缺失数字 By Python
    Leetcode 326.3的幂 By Python
    Leetcode 28.实现strStr() By Python
    Leetcode 7.反转整数 By Python
    Leetcode 125.验证回文串 By Python
    Leetcode 1.两数之和 By Python
    Hdoj 1008.Elevator 题解
    TZOJ 车辆拥挤相互往里走
  • 原文地址:https://www.cnblogs.com/cbza/p/7194031.html
Copyright © 2011-2022 走看看