0

ファイルをアップロードして、.csv各行をmysqlデータベースに保存しようとしています。したがって、.csvファイルの各行について、データベースに行を作成したいと思いますmysql。失礼しますが、私が言っていることを理解していただければ幸いです。

これまでのところ、最初の行からデータを取得できます。

$path   = $targetPath;
$row    = 1;

if (($handle = fopen($path, "r")) !== FALSE) {

    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {

        $row++;
        $dataEntries[] = $data ;

    }

    fclose($handle);

} else{

    echo("There has been an error parsing ".$csvname);

}

//Everything seems to be okay, we can save it
foreach($dataEntries as $line){

    $oName  = $line[0];
    $oUrl   = $line[1];
    $oType  = $line[2];
    $oDescr = $line[3];

    //If there is just one row in the csv file, Output: "string"
    //If there are more rows, than the output is "stringstring1string2"
    echo($oName);

}

アップデート

every1に知らせるだけです。@GregPのソリューションはうまく機能しましたが、サーバーにアップロードされたcsvファイルにアクセスできるように、infileコマンドにLOCALを追加する必要がありました。

LOAD DATA LOCAL INFILE '$targetPath' INTO TABLE tableName FIELDS TERMINATED BY ';' (name,url,type,descr)
4

1 に答える 1

8

LOADDATAINFILEを使用してみませんか。次のようになります。

LOAD DATA INFILE 'filename.csv' 
INTO TABLE filenames
FIELDS TERMINATED BY ',' 
(Name, Url, Type, Descr)
于 2012-05-13T14:48:53.113 に答える