【问题标题】:Mysql load data infile wrong pathMysql加载数据infile路径错误
【发布时间】:2013-03-11 15:51:41
【问题描述】:

你好,我非常需要你的帮助。

使用 mysql load data infile 导入 .CSV 文件后显示错误。

我有一个表单上传,它工作正常

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>

和一个使用加载数据文件的 PHP 上传脚本。

require("../config/conn.php");


  if (is_uploaded_file($_FILES['my-file']['tmp_name']) && $_FILES['my-file']['error']==0) {
    $path = 'C:/xampp/htdocs/dom/test/uploads/' . $_FILES['my-file']['name'];
    if (!file_exists($path)) {
      if (move_uploaded_file($_FILES['my-file']['tmp_name'], $path)) {

        echo $mysql = "LOAD DATA LOCAL INFILE '".$_FILES['my-file']['name']."' 
                REPLACE INTO TABLE table 
                FIELDS 
                    TERMINATED BY ',' 
                LINES 
                    TERMINATED BY '\\n'
                IGNORE 1 LINES 
                (`col1`,`col2`,`col3`,`col4`,`col5`....)";

                $query = mysqli_query($link, $mysql) or die(mysqli_error($link));

if(!$query) 
{
    printf("Error message: %s\n", mysqli_error($link));     
}   




      } else {
        echo "The file was not uploaded successfully.";
      }
    } else {
      echo "File already exists. Please upload another file.";
    }
  } else {
    echo "The file was not uploaded successfully.";
    echo "(Error Code:" . $_FILES['my-file']['error'] . ")";
  }

一切都很好,除了加载数据本地infile看不到正确的路径。请查看错误:找不到文件“logJan262013.CSV”。但 .csv 文件已成功上传到文件夹“uploads/”中。任何帮助将不胜感激。

非常感谢!

【问题讨论】:

  • 使用完整路径,而不仅仅是文件名。
  • 仅仅因为您将文件移动到该上传文件夹并不意味着mysql实际上会在那里寻找它。您还将使用此代码打开您的服务器以完全远程妥协(切勿在文件系统操作中直接使用用户提供的['name'])。

标签: php mysql


【解决方案1】:

您正在使用查询:

$mysql = "LOAD DATA LOCAL INFILE '".$_FILES['my-file']['name']."'...

我相信您希望使用完整路径

$mysql = "LOAD DATA LOCAL INFILE '".$path."'...

【讨论】:

    【解决方案2】:

    你会的

     if (move_uploaded_file($_FILES['my-file']['tmp_name'], $path)) {
    

    之前

    $query = mysqli_query($link, $mysql)
    

    所以,LOAD DATA 找不到文件也就不足为奇了。

    如果您给LOAD DATA 提供正确的$path,它应该会按预期工作。

    【讨论】:

      【解决方案3】:

      你没有告诉 LOAD DATA INFILE 路径!试着告诉它路径,一切都应该没问题。

      【讨论】:

        猜你喜欢
        • 2013-10-02
        • 2018-11-07
        • 2015-03-27
        • 1970-01-01
        • 1970-01-01
        • 2013-04-24
        • 1970-01-01
        • 2013-01-09
        • 2018-05-18
        相关资源
        最近更新 更多