получение дополнительных запятых и кавычек с помощью fgetcsv после прочтения первой строки

Я пытаюсь импортировать большой CSV-файл, содержащий 100 000 строк, в таблицу MySql. Я получаю сообщение об ошибке:

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, на предмет правильного синтаксиса для использования рядом с «Dell», «», «1610 Keeneland Dr», «», «Helena», «205-871-8006», «», «35080». -4114')' в строке 1

изменение кода с запроса на эхо:

'428A1B35-6913-497C-907A-BFB9C4983B04', 'Эндрю Коллинз О'Делл', '', '1610 Keeneland Dr', '', 'Хелена', '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, что, конечно, из-за дополнительных галочек и запятых.


person Jon    schedule 25.01.2013    source источник


Ответы (1)


вы должны использовать функцию

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

для частей данных ;-)

person markus    schedule 25.01.2013
comment
правильно сэр. никогда не думал об использовании этой функции для чего-либо другого, кроме предотвращения внедрения sql из пользовательских входов. благодарю вас. /салют - person Jon; 26.01.2013