【问题标题】:Using html form to import csv data... using PHP script load data infile and MySQL使用html表单导入csv数据...使用PHP脚本加载数据infile和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' - 代码中确实包含它

标签: php mysql csv load-data-infile


【解决方案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是否失败并输出原因。

【讨论】:

    猜你喜欢
    • 2013-10-27
    • 2014-07-04
    • 2021-10-02
    • 1970-01-01
    • 2011-08-01
    • 2013-09-25
    • 1970-01-01
    • 2013-05-27
    相关资源
    最近更新 更多