2

我有这个 CSV 文件,其中包含以下内容,

10000,hello
10000,bye
10000,good

而且,我下面的代码用于读取 CSV 文件,并将它们发送到数据库。

if ($_FILES[csv][size] > 0) { 

    //get the csv file 
    $file = $_FILES[csv][tmp_name]; 
    $handle = fopen($file,"r"); 

    //loop through the csv file and insert into database 
    do { 
        if ($data[0]) { 
            mysql_query("INSERT INTO table_name (table_column1, table_column2) VALUES 
                ( 
                    '".$data[0]."', 
                    '".$data[1]. "'
                ) 
            ");         
        }
    } while ($data = fgetcsv($handle,1000,",")); 

} 

有了上面,来自 CSV 的数据无法进入数据库,因为它读取的文件如下所示,

10000 hello 10000
bye 10000
good

我可以知道,这是什么问题?代码有问题吗?

但是,如果我的 CSV 文件的格式如下所示(每行之间有一个空行),

10000,hello

10000,bye

10000,good

所有数据都可以成功进入数据库。

4

1 回答 1

0

为什么不不使用 csv 读取功能呢?

if ($_FILES[csv][size] > 0) { 

    //get the csv file 
    $file = $_FILES[csv][tmp_name]; 
    $lines = file($file); 

    foreach ($lines as $line)
    {
        $data = explode(",", $line);
        if ($data[0] != "") { 
            mysql_query("INSERT INTO table_name (table_column1, table_column2) VALUES 
                ( 
                    '".$data[0]."', 
                    '".$data[1]. "'
                ) 
            ");         
        }
    }
}
于 2012-11-07T08:22:44.233 回答