如何解决csv文件导入中的单引号错误?

时间:2015-12-10 10:08:52

标签: php mysql csv

导入包含单引号的csv文件时出现问题。在我的csv文件中,一些带有单引号(撇号)的数据就像这样。

"User's answer","answer one","answer two","answer three".

我使用逗号(,)来分隔我的csv中的列。 当我尝试将该数据导入数据库时​​,它显示错误。这是我的代码。

while(($data=fgetcsv($handle,1000,",")) != FALSE ){
    $id = $data[0];
    $name = $data[1];//User's name
    $sql = "UPDATE my_table SET name='$name' WHERE id='$id'";
    mysql_db_query($dbname, $sql)or die("update error".mysql_error());
}

上面的代码显示了sql语法错误。如果我从csv文件中删除单引号(')并导入,一切正常。但是一些数据将来可能包含单引号(')。因此,我将mysql_real_escape_string添加到$name,就像这样

while(($data=fgetcsv($handle,1000,",")) != FALSE ){
        $id = $data[0];
        $name = mysql_real_escape_string($data[1]);//User's name
        $sql = "UPDATE my_table SET name='$name' WHERE id='$id'";
        mysql_db_query($dbname, $sql)or die("update error".mysql_error());
    }

但是,它导入到我展示的数据库中。

'User''s answer'

这是错误的,因为我想像User's answer一样保存。我不知道为什么它会节省很多单引号。请给我建议我该如何解决。

1 个答案:

答案 0 :(得分:1)

如果您已经有一个字符串,则可以创建一个包装它的流然后使用它see here。用于解析csv字符串的类。

在PHP中,还有一个函数kown为fgetcsv。但我遇到了一些问题。