【问题标题】:How to solve single quotes error in csv file import?如何解决csv文件导入中的单引号错误?
【发布时间】:2015-12-10 10:08:51
【问题描述】:

导入包含单引号的 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 一样保存。我不知道为什么它会节省很多单引号。请给我建议如何解决它。

【问题讨论】:

标签: php mysql csv


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2019-02-14
    • 2020-04-19
    相关资源
    最近更新 更多