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 に答える