2012-01-14 26 views
0

次のスクリプトを作成しています.csvファイルをmysqlデータベースにインポートします。 ユーザは最初にログインしなければならず、アップロードするセキュリティ権が別のファイルによってチェックされます。これがtrueに評価された場合、ファイルアップローダによってファイルをアップロードできます。ファイルアップロードはcsvのみをアップロードし、次にpartはファイルをインポートします。csvをアップロードしてmysqlデータベースにインポートします

csvレイアウトが間違っている場合でも、インポートを拒否することができますか?csvが正しくフォーマットされていれば、ひどく間違ってしまう可能性があります。この機能はこのプロジェクトの要件として要求されているので、私はそれを可能な限り馬鹿証明として作ろうとしています。

<?php 
$uploadedcsv = './uploads/'.$filename.''; 
$sql = 'LOAD DATA LOCAL INFILE "'.$uploadedcsv.'" INTO TABLE '.$table.' FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY """" IGNORE 1 LINES' or die(mysql_error()); 
?> 

答えて

2

あなたは100%でない限り、それは盲目的にアップロードされたファイルをインポートし、それは正しいですかどうかを確認する最初のしない良いだろうユーザーに依存していると、それはあなたではないと思われ、 。

これを行うには、ファイルを開いて読み込む必要があります(例: fgetcsvと入力し、データの一貫性を行単位で確認します。


ウェブ上で多くの例が見つかります。ここで

はいくつかされています

+0

ありがとうございます、私はそれを見ていきます:-) – user1148760

0

これは、MySQLを介して行うことができますが、デフォルトのLOADによって、データINFILEはCSVとは異なるフォーマットを期待しています。

If you specify no FIELDS or LINES clause, the defaults are the same as if you had written this: 

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' 
LINES TERMINATED BY '\n' STARTING BY '' 

ドキュメントノート、CSVファイルを扱うときのために:ドキュメントから

カンマ区切り「」で囲まれた値と行区切り\ rだけを扱うの一例である
LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES; 

\ n

これを使用してファイルをインポートするには、あなたのステートメントがアップロードファイルのCSV形式と一致していることを確認し、この方法でインポートできます。

関連する問題