ここで最初の質問をする前に、これをしばらく試して、できるだけ多くの方法を調査してきました。
非常に単純なcsvファイルがあります。Linux 改行で区切られた 1 列のデータ。テーブル(コード)の2列目(パスコード)にインポートしたい。最初の列は主キーの自動インクリメントです。
これが単純な csv データです (Linux ライン フィード - \n)
A12345678911
A12345678912
A12345678913
A12345678914
ファイルを収集するためのフォームは次のとおりです。
<form enctype="multipart/form-data" action="upload_webcodes.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="hidden" name="success" value="success" />
Send this file: <input name="webcodeupload" type="file" />
<input type="submit" value="Send File" />
</form>
これは、クエリを実行して tmp ファイルをデータベースにロードしようとしている php です。
<?php
function dbconnect(){
$db = mysql_connect('localhost', 'root', 'root');
mysql_select_db("mydatabase", $db);
return $db;
}
if ($_FILES['upload']['type'] === 'text/csv') {
$database = dbconnect();
$getfile = $_FILES['upload']['tmp_name'];
$sql = " LOAD DATA LOCAL INFILE $getfile INTO TABLE codes (`passcode`) LINES TERMINATED BY '\n' ";
mysql_query($sql);
}
?>
私はそれを働かせることができません。私はこれをMAMPでローカルに試しています。/tmp/php フォルダー Date Modified は更新されますが、そこにファイルが表示されません。私のテストファイルは非常に単純なので、より大きなファイルも試しました。フォームを送信した後、$_FILES 配列を出力しました。
Array
(
[webcodeupload] => Array
(
[name] => Aimport.csv
[type] => text/csv
[tmp_name] => /Applications/MAMP/tmp/php/phpsp9ezx
[error] => 0
[size] => 52
)
)
期待される結果がそこにあるようですか?phpmyAdmin でクエリを試してみましたが、LINES TERMINATED BY 句を削除すると機能します。私はそれがphpmyAdminのことだと思っています。また、クエリでその句を使用して、または使用せずにこのコードを試しました。
さらに、ページのロード時に「未定義のインデックス」エラーがいくつか発生します。私はその理由をある程度理解しており、ここでエラーを隠す方法を示すスレッドを読みましたが、エラーを隠すのではなく回避する方法を知りたいと思っています.
ご意見をお寄せいただければ幸いです。
ありがとう。