将用户上传的CSV导入MySQL

时间:2012-07-18 09:10:35

标签: php mysql csv

我正在尝试编写一个脚本,将用户上传的CSV文件的内容保存到MySQL数据库中。我对在服务器上永久保存文件不感兴趣 - 重点是只允许用户通过批量上传在MySQL数据库中创建多个条目。

这是我到目前为止所拥有的。

HTML上传表单

<form enctype="multipart/form-data" action="BulkUploadStudents.php" method="POST">
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>

将CSV文件的内容保存到MySQL数据库的PHP脚本

<?php

$username="";
$password="";
$database="";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

$file_handle = fopen("http://www.example.com/file.csv", "r");

while (!feof($file_handle) ) {

$line_of_text = fgetcsv($file_handle, 1024);

$query = "INSERT INTO students VALUES ('','$line_of_text[0]','$line_of_text[1]','$line_of_text[2]')";
mysql_query($query);

}

fclose($file_handle);

echo "<p><b>Records succesfully imported</b></p>";

?>

我基本上只需要一些关于如何连接两者的建议。我认为这就像命名PHP脚本BulkUploadStudents.php一样容易,为上传的文件名创建变量,然后用变量替换“example.com/file.csv”。但不确定具体细节。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

只需打开临时文件而不是网址:

$file_handle = fopen($_FILES["uploadedfile"]['tmp_name'], "r");