使用html表单导入csv数据...使用PHP脚本加载数据infile和MySQL
Posted
技术标签:
【中文标题】使用html表单导入csv数据...使用PHP脚本加载数据infile和MySQL【英文标题】:Using html form to import csv data... using PHP script load data infile and MySQL 【发布时间】:2013-12-06 11:33:02 【问题描述】:我无法让此脚本在 MAMP 本地服务器上运行:
<?php
//Uploader Script for mass upload of devices.
//Check for errors
if($_FILES['file_upload']['error'] > 0)
die('An error ocurred when uploading.');
//check file type is csv
if($_FILES['file_upload']['type'] != 'text/csv')
die('Unsupported filetype uploaded.');
//check size of csv
if($_FILES['file_upload']['size'] > 500000)
die('File uploaded exceeds 500kb - maximum upload size.');
$file_url = $_FILES['file_upload']['tmp_name'];
$query = <<<eof
LOAD DATA LOCAL INFILE '$file_url'
REPLACE
INTO TABLE DEVICE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(device_id, device_name, app_name)
eof;
$load_data = mysql_query($query);
数据进入一个没有外键依赖的表。我正在尝试上传 CSV,并已成功将数据库与其他代码一起使用。我正在使用此电子邮件表单:
<form action='upload.php' enctype='multipart/form-data' method='post'>";
File: <input type='file' name='file_upload'>";
<input type='submit' name='Submit' value='Download Devices' />
</form>
【问题讨论】:
已编辑以在表单中包含 enctype='multipart/form-data' - 代码中确实包含它 【参考方案1】:我认为您需要将 enctype="multipart/form-data" 添加到您的表单标签中。
见What does enctype='multipart/form-data' mean?
好的,现在我们知道它在那里,您需要检查运行 MySQL 进程的用户是否有权访问 $_FILES['file_upload']['tmp_name'] 处的临时文件。这是最有可能发生故障的地方。
您可以使用 mysql_error 或 mysql_errno 函数找到它: http://php.net/mysql_error
$load_data = mysql_query($query) or die("<b>A fatal MySQL error occured</b>.\n<br />Query: " . $query . "<br />\nError: (" . mysql_errno() . ") " . mysql_error());
这会让你知道mysql是否失败并输出原因。
【讨论】:
以上是关于使用html表单导入csv数据...使用PHP脚本加载数据infile和MySQL的主要内容,如果未能解决你的问题,请参考以下文章