[英]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.