通过php将csv文件导入mysql

时间:2015-04-06 11:22:27

标签: php mysql csv

我正在使用php将csv文件导入我的数据库(Mysql)。 下面的代码只将第一行(csv文件中的数据)插入到数据库中。但它应该在数据库中插入多行。

$info = pathinfo($_FILES['file']['name']);

/**
 * This checks if the file is a csv file
 */
if(strtolower($info['extension']) == 'csv'){
    $filename=$_FILES["file"]["tmp_name"];

    if($_FILES["file"]["size"] > 0){

        //Open the file
        $file = fopen($filename, "r");

        while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE){
            $num = count($emapData);

            /**
             * Insert data into the database if the columns are 
             *  exactly in three columns
             */ 
            if ($num == 3){
                $sql = "INSERT 
                        INTO Users (firstName,surName,indexNo)
                    VALUES('$emapData[0]','$emapData[1]','$emapData[2]')";

                $result=$db->query($sql);


                if($result){
                    echo "<script type=\"text/javascript\">
                            alert(\"CSV File has been successfully Imported.\");
                            window.location = \"../administrator/bulkStudentReg.php\"
                        </script>";
                }
                else{
                    echo "<script type=\"text/javascript\">
                    alert(\"Please Upload CSV File was not successful.\");
                    window.location = \"../administrator/bulkStudentReg.php\"
                    </script>";
                }
            }
            else{
                echo "<script type=\"text/javascript\">
                    alert(\"UPLOAD FAILED: Please your csv file contains incomplete column/s. Column should be 3 columns\");
                    window.location = \"../administrator/bulkStudentReg.php\"
                    </script>";
            }
        fclose($file);
        }
    }
}
else{
    echo "<script type=\"text/javascript\">
                    alert(\"UPLOAD FAILED: Please the file should be in a csv file, eg. students.csv \");
                    window.location = \"../administrator/bulkStudentReg.php\"
                    </script>";
}

2 个答案:

答案 0 :(得分:5)

您可以尝试使用MySQL内置函数插入CSV数据,如果您的数据结构与表格结构相同,则非常简单:

$sql = "LOAD DATA INFILE '$filename' INTO TABLE Users
FIELDS TERMINATED BY ','"

检查MySQL LOAD DATA Documentation了解详情

答案 1 :(得分:3)

你在找这样的东西吗?

我没有测试,因为我没有您的样本数据但是请试一试。

<?php
$info = pathinfo($_FILES['file']['name']);

/**
 * This checks if the file is a csv file
 */
if(strtolower($info['extension']) == 'csv'){
    $filename=$_FILES["file"]["tmp_name"];

    if($_FILES["file"]["size"] > 0){

        //Open the file
        $file = fopen($filename, "r");

        while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE){
            $num = count($emapData);

            /**
             * Insert data into the database if the columns are 
             *  exactly in three columns
             */ 
            if ($num == 3){
                $sql = "INSERT 
                        INTO Users (firstName,surName,indexNo)
                    VALUES('$emapData[0]','$emapData[1]','$emapData[2]')";

                $result=$db->query($sql);
            }
        }
        if($result){
                    echo "<script type=\"text/javascript\">
                            alert(\"CSV File has been successfully Imported.\");
                            window.location = \"../administrator/bulkStudentReg.php\"
                        </script>";
                }else{
                    echo "<script type=\"text/javascript\">
                    alert(\"Please Upload CSV File was not successful.\");
                    window.location = \"../administrator/bulkStudentReg.php\"
                    </script>";
                }
    }
    fclose($file);
}
else{
    echo "<script type=\"text/javascript\">
                    alert(\"UPLOAD FAILED: Please the file should be in a csv file, eg. students.csv \");
                    window.location = \"../administrator/bulkStudentReg.php\"
                    </script>";
}
?>