我需要一些帮助来连接这个点。有很多片段浮动,但我还没有找到一个好的自然结束教程。
对于我正在构建的简单自定义CMS,我希望最终用户管理员可以选择上传其他用户的CSV。 PHPMyAdmin或其他“直接”访问数据库不是我的环境的选项。所以我正在尝试构建一个文件上传表单,然后将数据插入到相应的表中。
我发现this tutorial on building the upload form - 工作正常(虽然我想添加一些额外的验证/安全性)。基于这些帖子(like this one),我认为使用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;
任何对体面教程的建议或指示都将不胜感激。
答案 0 :(得分:4)
您的问题是PHP正在使用Web服务器,MySQL正在使用数据库服务器。我认为只要不涉及复制就会丢失" dot"可能是
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