如何解决PHP MySQL LOAD DATA INFILE帮助
| 我似乎无法正确查询此查询。基本上,我从表单中获取一个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服务器版本相对应的手册以获取正确的语法,以在\'\'jos_rates_table \'FIELDS TERMINATED BY \',\'ENCLOSED BY \'\'ESCAPED BY \'\\\'LINES \'附近使用1行
解决方法
您需要在行终止子句中使用斜杠,否则,您只需在查询中添加换行符即可。
LINES TERMINATED BY \'\\\\n\'
Mysql只会得到\\n
,但是PHP会尝试解释它们,因此您必须对其进行转义。
您可能还有其他问题,但是您没有告诉我们会发生什么。
,不知道为什么要使用该长屁股网址而不是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/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。