php - 通过php导入csv文件到mysql

标签 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>";
}

最佳答案

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

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

检查 MySQL LOAD DATA Documentation了解更多详情

关于php - 通过php导入csv文件到mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29470273/

相关文章:

php - 如何在选择中选择值时将值加载到文本字段

php - 算法实现对比c++和php

php - 如何使用多个 if 语句更新表

MySQL ORDER BY + LIMIT + OFFSET 语句 : how to OFFSET firts and only then sort with ORDER BY

entity-framework - 无论如何,我是否可以将数据加载到内存中,而不是使用 .csv 文件来进行单元测试?

python - 如何使用 if 语句从 Python 中的两列中读取?

php - 在特定 id 之后插入第二列到 csv

php - 减少仅在 ORDER BY 字段名称上不同的 mysql 语句

php - 如果使用 PHP 用户的时区发生更改,如何处理存储在数据库中的用户数据

mysql - 如何在不使用子查询的情况下按最小日期计算新用户?