使用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的主要内容,如果未能解决你的问题,请参考以下文章

PHP:在导入 csv 数据的脚本中出现解析错误

将 php 中包含的 HTML 表单信息写入 CSV 文件

csv数据导入Hadoop中的HDFS

CSV 文件格式

使用PHP导入和导出CSV文件

如何使用 if else 条件在 php mysql 数据库中导入 csv 数据