这是我的CSV的第一行(answer.csv):
Respondent Name,name,1
我使用以下代码解析并将其插入db
if (($handle = fopen("answer.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo $num;
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
$query_add="INSERT INTO answer (`AnswerValue`,`AnswerKey` ,`Question`)
VALUES ($data[0],$data[1],$data[2])";
echo $query_add;
echo mysql_query($query_add) or die(mysql_error());
#for ($c=0; $c < $num; $c++) {
# echo $data[$c] . "<br />\n";
#}
}
fclose($handle);
}
但是,我收到以下错误,因为该行未被“,”解析:
1 fields in line 1:
Respondent Name name 1
INSERT INTO answer (`AnswerValue`,`AnswerKey` ,`Question`)
VALUES (Respondent Name name 1,,)
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right
syntax to use near 'Name name 1,,)' at line 2
由于某种原因,它显示第1行只有一个字段,而如果我们查看csv文件则有3个字段......
任何人都知道为什么?
答案 0 :(得分:1)
也许您的CSV文件字符集无效。确保它以UTF8编码。
答案 1 :(得分:0)
您必须将这些值放在引号中。
试试这个:
$query_add="INSERT INTO answer (`AnswerValue`,`AnswerKey` ,`Question`)
VALUES ('".$data[0]."','".$data[1]."','".$data[2]."')";
当我尝试使用上面的更改代码时,这就是结果:
3
3 fields in line :
INSERT INTO answer (`AnswerValue`,`AnswerKey` ,`Question`)
VALUES ('Respondent Name','name','1')