LOAD DATA INFILE-mysql.php脚本没有正常运行


LOAD DATA INFILE - mysql/php script not functioning as it should

试图使用"LOAD DATA INFOILE"从CSV(10k条记录)填充数据库表,但目前它什么也没做。

没有错误,没有数据输入,我不知道它出了什么问题,所以我们非常感谢您的帮助!

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>";

注意

请不要对新代码使用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()也返回一个boolean,您应该检查它是true:

成功时返回TRUE。

如果filename不是有效的上传文件,则不会发生任何操作,move_uploaded_file()将返回FALSE。

如果filename是有效的上传文件,但由于某种原因无法移动,则不会发生任何操作,并且move_uploaded_file()将返回FALSE。此外,还会发出警告。

此处为move_uploaded_file()的完整文档