簡體   English   中英

PHP MySQL 加載數據文件幫助

[英]PHP MySQL LOAD DATA INFILE Help

我似乎無法正確查詢此查詢。 基本上,我從表單中獲取 csv 並嘗試將其加載到數據庫中。 我從 phpmyadmin 獲取了大部分查詢。 我應該使用臨時文件對嗎? 這里是...

<form name = "price_chart" method="post" action="index.php?option=<?php echo $option ?>&task=complete" enctype="multipart/form-data">
<label>File: </label>
<input type="file" name="white" id="white"/><br />
<input type="hidden" value="TEST" name = "test" />
<input type="submit" name = "upload" value="Upload File" />
</form>

<?php
}
function complete($option){
$pfile = $_FILES['white']['name'];  
$ptmpName = $_FILES['white']['tmp_name'];
$test = $_POST['test'];
$result = mysql_query("LOAD DATA LOCAL INFILE '$ptmpName' REPLACE INTO TABLE 'jos_rates_table' FIELDS TERMINATED BY ',' ENCLOSED BY ' ' ESCAPED BY '\\' LINES TERMINATED BY '\n'('country' , 'rate')")or die ('Error: '.mysql_error ());
        while ($row = mysql_fetch_array($result)) {
        }
        $num_rows = mysql_num_rows($result);
        echo $num_rows;
}

更新:這是錯誤消息

您的 SQL 語法有錯誤; 檢查與您的 MySQL 服務器版本相對應的手冊,以在第 1 行的 ''jos_rates_table' FIELDS TERMINATED BY ',' ENCLOSED BY ' ' ESCAPED BY '\' LINES ' 附近使用正確的語法

您需要為行終止子句轉義斜杠,否則您只需在查詢中添加一個換行符。

LINES TERMINATED BY '\\n'

Mysql 只會得到\n ,但 PHP 試圖解釋這些,所以你必須逃避它們。

您可能還有其他問題,但您沒有告訴我們會發生什么。

不知道你為什么要使用那個長屁股 url 而不是 index.php 或只是''? 另外我認為您需要指定 ENCTYPE="multipart/form-data" 因為它是文件的上傳表單。 不知道如何只插入文件,我認為您需要獲取文件的內容,然后將其分解並插入

$pfile = $_FILES['white']['name']; 
$ptmpName  = $_FILES['white']['tmp_name']; 
$fileSize = $_FILES['white']['size']; 
$fileType = $_FILES['white']['type']; 
$fp = fopen($ptmpName, 'r'); 
$content = fread($fp, $fileSize); 
$content = str_replace("\r\n", "\r", $content);
$Data_Lines = explode("\r",$content);

for ($n = 0; $n < (count($Data_Lines)-1);$n++){
$line =  addslashes($Data_Lines[$n]); 
$Value = explode(",",$line);
...//The you run insert  statements for $Value[1], $Value[2]...///

}

或者您可以使用 fgetcsv - 查看這篇文章: http://www.programmingfacts.com/import-csvexcel-data-mysql-database/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM