0

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

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

将代码从查询更改为回显:

'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 列关闭,这当然是因为额外的刻度和逗号。

4

1 回答 1

2

你必须使用这个功能

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

对于数据部分;-)

于 2013-01-25T20:34:42.070 回答