0

CSV(10kレコード)からデータベーステーブルにデータを入力するために「LOADDATA INFILE」を使用しようとしていますが、現時点では何も実行されません。

エラーもデータも入力されておらず、何が問題なのかわからないので、助けていただければ幸いです。

My code (-CSS and DBconnect):


if (isset($_POST['submit'])) {
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
    echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded
   successfully." . "</h1>";
}

$temp_file = $_FILES['filename']['tmp_name']; 
$origin_file = $_FILES['filename']['name'];
$target_file = 'uploads/'.$origin_file;
move_uploaded_file($temp_file, $target_file);
$file_name = $target_file;

$query = <<<eof
LOAD DATA LOCAL INFILE '$file_name'
 INTO TABLE importing
 FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
 LINES TERMINATED BY '\n'
(text,number)
IGNORE 1 LINES
eof;

mysql_query($query);


print "Import done";

mysql_close(); 
//view upload form
}else {

print "Upload new csv by browsing to file and clicking on Upload<br />\n";

print "<form enctype='multipart/form-data' action='upload.php' method='post'>";

print "File name to import:<br />\n";

print "<input size='50' type='file' name='filename'><br />\n";

print "<input type='submit' name='submit' value='Upload'></form>";
4

1 に答える 1

2

ノート

mysql_*新しいコードに関数を使用しないでください。それらはもはや保守されておらず、コミュニティは非推奨プロセスを開始しています。赤いボックスが見えますか? 代わりに、準備済みステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する必要があります。決められない場合は、この記事を参考にしてください。学習したい場合は、ここに良い PDO チュートリアルがあります。

コードが出力するエラーを確認するには

mysql_query($query);

$result = mysql_query($query);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

次にmysql_error()、何も出力しない代わりにエラーを出力します...

@Lèsemajestéが指摘したように-チェックする必要があるmove_uploaded_file()も返します:booleantrue

成功すると TRUE を返します。

filename が有効なアップロード ファイルでない場合、アクションは発生せず、move_uploaded_file() は FALSE を返します。

filename が有効なアップロード ファイルであるが、何らかの理由で移動できない場合、アクションは発生せず、move_uploaded_file() は FALSE を返します。さらに、警告が発行されます。

move_uploaded_file()ここの完全なドキュメント

于 2012-07-16T09:46:20.413 に答える