繁体   English   中英

PHP MySQL - 使用LOAD DATA INFILE导入CSV - 确定文件路径?

[英]PHP MySQL - Import CSV Using LOAD DATA INFILE - Determine file path?

我需要一些帮助来连接这个点。 有很多片段浮动,但我还没有找到一个好的自然结束教程。

对于我正在构建的简单自定义CMS,我希望最终用户管理员可以选择上传其他用户的CSV。 PHPMyAdmin或其他“直接”访问数据库不是我的环境的选项。 所以我正在尝试构建一个文件上载表单,然后将数据插入到相应的表中。

我找到了关于构建上传表单的教程 - 工作正常(虽然我想添加一些额外的验证/安全性)。 基于这几个帖子( 就像这个 ),我认为使用LOAD DATA INFILE比尝试使用fgetcsv或其他东西进行循环和解析更有意义(但可以随意反对)。

这是我当前的代码 - 它不起作用,我认为它是文件路径 - 我应该如何格式化它? _uploads目录与此处理器文件位于同一位置。

$target_path = "_uploads/";

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']). 
    " has been uploaded to " . $target_path;
} else{
    echo "There was an error uploading the file, please try again!";
}

$sql = "LOAD DATA INFILE $target_path
        INTO TABLE User
        (UserFirstName, UserLastName)
        FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\"'
        LINES TERMINATED BY '\r\n'
        ";

$result = mysql_query($sql, $connection);

if (mysql_affected_rows() == 1) {
    $message = "The user was successfully updated!";
} else {
    $message = "The user update failed: ";
    $message .= mysql_error(); 
}

echo $message;

任何建议或指向体面的教程将不胜感激。

您的问题是PHP正在使用Web服务器,MySQL正在使用数据库服务器。 我认为只要不涉及复制,丢失的“点”就可以了

LOAD DATA LOCAL INFILE

从客户端计算机读取。

(原文: http//dev.mysql.com/doc/refman/5.1/de/load-data.html

截至2018年: https//dev.mysql.com/doc/refman/8.0/en/load-data.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM