我正在使用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);
}
}
答案 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);