读取csv以插入mysql。用前一行填充空列

时间:2015-09-09 13:56:45

标签: php mysql csv insert

我有一个csv文件。我正在尝试读取此文件并将数据导入mysql数据库。

例如

OrderID,ProductId,ProductDescription
100001962,15,Product1
"",32,Product2
"",31,Product3
100001546,24,Product4

我如何拥有我的数据库

100001962,15,Product1
100001962,32,Product2
100001962,31,Product3
100001546,24,Product4

new.php

<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
  <form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="csv" value="" />
    <input type="submit" name="submit" value="Save" />
  </form>
  </body>
</html>

upload.php的

header('Content-Type: text/html; charset=UTF-8');
require_once 'db.php';
if($_FILES['csv']['error'] == 0){
$name = $_FILES['csv']['name'];
$ext = strtolower(end(explode('.', $_FILES['csv']['name'])));
$type = $_FILES['csv']['type'];
$tmpName = $_FILES['csv']['tmp_name'];

// check the file is a csv
if($ext === 'csv'){
    if(($handle = fopen($tmpName, 'r')) !== FALSE) {
    // necessary if a large csv file
    set_time_limit(0);
    mysqli_set_charset($connection,"utf8");
    $success = 0;
    $nosuccess = 0;
        while(( $data = fgetcsv($handle, 1000, ',')) !== FALSE) {
            // number of fields in the csv
            $csv[$row]['col1'] = str_replace("'", " ", $data[0]);//orderid
            $csv[$row]['col2'] = str_replace("'", " ", $data[1]);//productid
            $csv[$row]['col3'] = str_replace("'", " ", $data[2]);//productdesc

            if ($csv[$row]['col1']==0){
                if ($csv[$row-1]['col1']!=0){
                    $sql = "INSERT INTO csv (orderid, orderdate, orderstatus) VALUES ('". $csv[$row-1]['col1']."','". $csv[$row-1]['col2']."','". $csv[$row-1]['col3']."')";
                }
                if ($csv[$row-2]['col1']!=0){
                    $sql = "INSERT INTO csv (orderid, orderdate, orderstatus) VALUES ('". $csv[$row-2]['col1']."','". $csv[$row-2]['col2']."','". $csv[$row-2]['col3']."')";
                }
                //etc 
            }
            else
            {
                    $sql = "INSERT INTO csv (orderid, orderdate, orderstatus) VALUES ('". $csv[$row]['col1']."','". $csv[$row]['col2']."','". $csv[$row]['col3']."')";
            }
            mysqli_query($connection, $sql);
        }
    }
}

但不起作用

0 个答案:

没有答案