将 CSV 文件插入 mysql 数据库


Insert CSV file into mysql database

我想使用 php 在我的数据库中插入一个 csv 文件。我尝试了以下代码,但它给出了以下错误

致命错误:在第 25 行的 C:''xampp''htdocs''ICT_project''class.import.php 中调用 null 上的成员函数 exec((

<?php
include 'connection.php';
class Import {
private $pdo;
public function __construct() {
    $obj_connect = new DBconnect();
    $this->pdo = $obj_connect->db_con;
}
public function import_csv() {
    $extension= end(explode(".", basename($_FILES['file']['name'])));
    if (isset($_FILES['file']) && $_FILES['file']['size'] < 10485760 && $extension=='csv') {
        $file = $_FILES['file']['tmp_name']; 
        $handle = fopen($file, "r"); 
        try {           
            while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                //$num = count($data);
            $importSQL = "INSERT INTO tbl_applicants(application_no, applicant_name,applicant_email, applicant_mobile, applicant_address) VALUES('$data[0]','$data[1]')";
            $this->pdo->exec($importSQL);  
            }
        }
        catch(PDOException $e) {
            echo $e->getMessage();
        }
    }
}

我的tbl_applicants有五个字段命名:application_noapplicant_nameapplicant_emailapplicant_mobileapplicant_address。在csv文件中,我有拖曳具有上述五个字段的数据行。我不明白插入查询是什么?

嗨,这是更新的代码,工作正常。现在我想跳过我的.csv文件的第一行,该文件通常包含标题(id,姓名,电子邮件,地址(。我该怎么做?

<?php
include 'connection.php';
class Import {
    private $pdo;
    public function __construct() {     
        $obj_connection = new Db_connection();
        $this->pdo = $obj_connection->connection();     
    }
    public function import_csv() {
        $extension= end(explode(".", basename($_FILES['file']['name'])));
        if (isset($_FILES['file']) && $_FILES['file']['size'] < 10485760 && $extension=='csv') {
            $file = $_FILES['file']['tmp_name']; 
            $handle = fopen($file, "r"); 
            try {           
                while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {                   
                $importSQL = "INSERT INTO tbl_applicants ( application_no, applicant_name, applicant_email, applicant_mobile, applicant_address ) VALUES('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')";
                $this->pdo->query($importSQL);  
                }
            }
            catch(PDOException $e) {
                echo $e->getMessage();
            }
        }
    }
}
没有

看到数据,这只是对上面使用的猜测,但也许您只需要从csv中添加剩余字段?

$importSQL = "INSERT INTO `tbl_applicants`
   ( application_no, applicant_name, applicant_email, applicant_mobile, applicant_address ) 
   VALUES
   ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')"

请将此插入查询替换为上述查询。

$importSQL = "INSERT INTO tbl_applicants
            (application_no, applicant_name,applicant_email, applicant_mobile, applicant_address) 
             VALUES('$data[0]','$data[1]','','','')";