doucanrui1735 2014-06-20 22:24
浏览 51
已采纳

将csv文件上传到Mysql / PHP文件

//connect to Database

mysql_select_db($database_csv, $csv);

if (isset($_POST['submit'])) {

if (is_uploaded_file($_FILES['filename']['tmp_name'])) {

echo "<br><center><p>" . " ". $_FILES['filename']['name'] ." " . "</p></center>";
                                                        }

//Import uploaded file to Database
$handle = fopen($_FILES['filename']['tmp_name'], "r");
$firstRow = true;
$count = 0; //skip first line of the CSV file 
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {

if($count) //skip first line of the CSV file 
{

$name=$data[0];

$description=$data[1];

$price=$data[2];

$shipping=$data[3];

$quantity=$data[4];

$import="INSERT into results (name,description,price,shipping,quantity) VALUES('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')";

mysql_query($import) or die(mysql_error());
}
$count++;
}

fclose($handle);

?>

Uploading .CSV File using FileUpload in PHP/Mysql but the data in the csv all insert into one column amongs five columns, please read my code and help. Thanks in Advance..

  • 写回答

2条回答 默认 最新

  • duanduo0520 2014-06-20 22:41
    关注

    A simple LOAD DATA INFILE will work just fine. It will also be a lot faster.

    Code:

    <?php
    //connect to Database
    mysql_select_db($database_csv, $csv);
    
    if (isset($_POST['submit'])) {
    
        $tmp = $_FILES['filename']['tmp_name'];
        $name = $_FILES['filename']['name'];
    
        //Can be any full path, just don't end with a /. That will be added in in the path variable
        $uploads_dir = 'C:/Users/Ernest/Desktop';
    
        $path = $uploads_dir.'/'.$name;
    
        if(move_uploaded_file($tmp, $path)){
            echo "<br><center><p>". $name ."</p></center>";
    
            //Import uploaded file to Database
            //If the query fails, try LOAD DATA LOCAL INFILE
            $import = "
            LOAD DATA INFILE '".$path."'
                   INTO TABLE results  CHARACTER SET utf8 FIELDS TERMINATED BY ','
                   OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES (name, description, price, shipping, quantity);
            ";
    
            mysql_query($import) or die(mysql_error());
            //If you do not want to keep the csv, you can delete it after this point.
            //unlink($path);
    
        }else{
            echo 'Failed to move uploaded files';
        }
    
    }
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?