2013-03-11 68 views
0

嗨,我非常需要你的幫助。Mysql加載數據錯誤路徑

使用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上傳腳本LOAD DATA INFILE。

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 /'中。任何幫助,將不勝感激。

非常感謝!

+2

使用完整路徑,而不僅僅是文件名。 – 2013-03-11 15:53:17

+0

只是因爲您將文件移動到該上傳文件夾並不意味着mysql實際上會在那裏查找它。你也打開你的服務器到這個代碼的總體遠程妥協(不要直接在文件系統操作中使用用戶提供的'['name']')。 – 2013-03-11 15:55:20

回答

1

您使用查詢:

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

我相信你希望使用的完整路徑

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

謝謝。現在的工作。 – phphopzter 2013-03-12 00:53:10

0

你做

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

$query = mysqli_query($link, $mysql) 

因此,LOAD DATA找不到該文件並不奇怪。

如果您給LOAD DATA正確的$path,它應該按預期工作。

0

錯誤您還沒有告訴LOAD DATA INFILE路徑!嘗試告訴它的路徑,一切都應該沒問題。