跟进我的最后一个帖子。尝试通过PHP上传脚本将用户生成的CSV导入MySQL。上传成功,但由于权限问题,我无法使用LOAD DATA。以下是我要做的事情:
$row = 1;
if (($handle = fopen($target_path, "r")) !== FALSE)
{
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++)
{
$fullRow = $fullRow . $data[$c] . "," ;
}
echo $fullRow;
mysql_query("INSERT INTO foo (field1, field2, field3, field4) VALUES ('$fullRow')");
$fullRow = NULL;
}
fclose($handle);
}
echo $fullRow
从CSV文件中逐出该行的逐字副本,但最后还有一个逗号。这是插入不正常的原因吗?当我通过phpMyAdmin手动上传时,导入的CSV文件没有问题。或者代码的VALUE ('$fullRow')
位是否有问题?
答案 0 :(得分:0)
您只需删除最后一个逗号即可。
for ($c=0; $c < $num; $c++)
{
$fullRow = $fullRow . $data[$c] . "," ;
}
echo $fullRow;
$fullRow = substr($fullRow,0,-1);
而且你的脚本也不行。
mysql_query(" INSERT INTO foo (field1, field2, field3, field4) VALUES ('$fullRow') " );
$fullRow = NULL;
答案 1 :(得分:0)
Paolo_NL_FR的修复程序可以让您启动并运行。该脚本可以使用一些TLC,甚至没有基本的SQL注入保护。尝试这样的事情:
if (($handle = fopen($target_path, "r")) !== FALSE)
{
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$values = implode(",", array_map('mysql_real_escape_string', $data));
mysql_query("INSERT INTO foo (field1, field2, field3, field4) VALUES ($values);");
}
fclose($handle);
}