1

ここで最初の質問をする前に、これをしばらく試して、できるだけ多くの方法を調査してきました。

非常に単純な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のことだと思っています。また、クエリでその句を使用して、または使用せずにこのコードを試しました。

さらに、ページのロード時に「未定義のインデックス」エラーがいくつか発生します。私はその理由をある程度理解しており、ここでエラーを隠す方法を示すスレッドを読みましたが、エラーを隠すのではなく回避する方法を知りたいと思っています.

ご意見をお寄せいただければ幸いです。

ありがとう。

4

2 に答える 2