从.csv - >逗号解析的多维数组导致mysql数据库插入问题

时间:2010-06-14 19:41:42

标签: codeigniter csv multidimensional-array preg-replace

我正在使用Codeigniter将上传的csv文件(这是一个多维数组)解析为数据库。我已经尝试了正确解析逗号值的所有内容,但是mysql中的“id”列显得简短,因为它读取“text”,而不是“text,text,text”。救命啊!?

    *For reference:*

    print_r($data['csvData']);

    Array ( [0] => Array ( [category,id] => text1,"text,text,text" )
            [1] => Array ( [category,id] => text2,"text,text,text" )
    )

    foreach($data['csvData'] as $row) {
                    foreach ($row as $item) {
                            $item=explode(",", $item); 
                            $results_array = array(
                                    'category' => $item[0],
                                    'id' => $item[1]
                                    );
                            $this->db->set($results_array);
                            $this->db->insert('table', $results_array);
                    }
    }

1 个答案:

答案 0 :(得分:0)

我没有受过教育的猜测:

$item=explode(",", $item);正在爆炸$item text1,"text,text,text",对吗?所以它看到4个逗号,并将它们爆炸。因此,$item[0]将为“text1,$item[1]将为”text“$item[2]将为”text“,$item[3]将为”text“。

您可以尝试将csv中的分隔符设置为逗号以外的其他内容,然后将其分解。

或者您可以在将其他项插入db之前连接其他项:

$item = explode(",", $item); 
$id_insert = $item[1].$item[2].$item[3];
//if you need to retain the commas in the id: 
//$id_insert = $item[1].','.$item[2].','.$item[3];
$results_array = array(
    'category' => $item[0],
    'id' => $id_insert,
);
$this->db->set($results_array);
$this->db->insert('table', $results_array);