Php fgetcsv未正确分析该行

Php fgetcsv未正确分析该行,php,sql-server,parsing,csv,fgetcsv,Php,Sql Server,Parsing,Csv,Fgetcsv,这是我的CSV(answer.CSV)的第一行: 我使用下面的代码来解析它并将其插入到数据库中 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: &l

这是我的CSV(answer.CSV)的第一行:

我使用下面的代码来解析它并将其插入到数据库中

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行中只有一个字段,而如果我们查看csv文件,则有3个字段


有人知道为什么吗?

您必须将值放在引号中

试试这个:

$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')

可能您的CSV文件字符集无效。确保它是用UTF8编码的。

不起作用:我得到以下信息:插入到答案中(
AnswerValue
AnswerKey
Question
)值('responder Name Name 1','',''),11如您所见,整行被插入到第1列中,再次尝试创建文件,可能已损坏。我不知道。你的代码是正确的。你是对的。我通过ftp上传到我服务器上的文件,但它没有被正确读取。当我在计算机上的本地文件上运行它时,它可以正常工作,以避免以后出现问题。如果您的数据包含,请阅读并遵循答案中给出的建议。学习在准备好的语句中使用MySQLi或PDO,并在实际导入文件时绑定variablesim
$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')