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

标签 php mysql fgetcsv

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

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Dell', '', '1610 Keeneland Dr', '', 'Helena', '205-871-8006', '', '35080-4114')' at line 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 函数中放入字段封装参数 '"'。我的一些索引得到了 undefined offset 。所以问题是是否有人知道额外的刻度和逗号可能来自什么.

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

最佳答案

你必须使用该功能

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

对于数据部分;-)

关于php - 在读取第一行后使用 fgetcsv 获取额外的逗号和引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14529717/

相关文章:

php - 选择动态端点时 Guzzle 不使用基本 uri(在本地工作,但在 K8S 上不工作)

php - mysqli_connect ( ) 与 @mysqli_connect

javascript - 错误 : connect ECONNREFUSED Node. js、Heroku、Mysql

PHP 的 fgetcsv 在文件开头返回 false

mysql - 将数组合并和排序为一个的公式/算法

php - 404 页面未找到 - CodeIgniter 相关

php - 如何在有条件的情况下使用PHP将csv文件解析为mysql DB

php - 根据 mysql 值回显数组值

MYSQL 之前最近的行,另一列具有特定值