在读取第一行后,使用fgetcsv获取额外的逗号和引号

时间:2013-01-25 20:19:20

标签: php mysql fgetcsv

我正在尝试将包含100,000行的大型csv文件导入MySql表。我收到了错误:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'Dell','','1610 Keeneland Dr','','Helena','205-871-8006',   '','35080-4114')'在第1行

将代码从查询更改为echo:

  

'428A1B35-6913-497C-907A-BFB9C4983B04','Andrew Collins O'Dell','',   '1610 Keeneland Dr','','Helena',''205-871-8006','','35080-4114')

你可以看到有一些额外的引号(2个单一的刻度)和一些字段之间的逗号。我想也许这是一片空旷但没有骰子。这是我的代码:

if (($handle = fopen("accounts.csv", "r")) !== FALSE)
{
    while (($data = fgetcsv($handle, ",")) !== FALSE)
    {
        try
        {
            mysql_query("INSERT INTO accounts (id, name
            ,billing_address_street
            , billing_address_city, billing_address_state, billing_address_postalcode
            , phone_office, phone_alternate
            , website) values ('".trim(com_create_Guid(), '{}')
            ."', '".$data[1]."', '".$data[46]."', '".$data[48]
            ."', '".$data[49]."', '".$data[50]."', '".$data[8]
            ."', '".$data[9]."', '".$data[52]."')")or die(mysql_error());
        }
        catch(MySqlException $e)
        {
            $e.getMessage();
        }
    }
    fclose($handle);
}

我已经尝试在fgetcsv函数中放入字段机箱参数'“'。我得到了一些未定义的偏移量。我的问题是,是否有人知道额外的刻度和逗号是什么来自

旁注:它插入了250条记录,虽然名称后面的所有内容都是一列或2,这当然是因为额外的刻度和逗号。

1 个答案:

答案 0 :(得分:2)

你必须使用这个功能

mysql_real_escape_string( $data[$x], $dblink )

表示数据部分; - )