Анализ многомерного массива из .csv -> запятых вызывает проблемы вставки базы данных mysql - PullRequest
1 голос
/ 14 июня 2010

Я использую Codeigniter для анализа загруженного CSV-файла (который является многомерным массивом) в базе данных.Я перепробовал все, чтобы правильно проанализировать значения запятых, но столбец «id» в mysql становится коротким, так как он читает «текст», а не «текст, текст, текст».Помогите!?

    *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 голосов
/ 17 июня 2010

Мое необразованное предположение:

$item=explode(",", $item); взрывается $item, что text1,"text,text,text", верно?Таким образом, он видит 4 запятых и взрывает их.Следовательно, $item[0] будет "text1", $item[1] будет "текстом" $item[2] будет "текстом" и $item[3] будет "текстом".

Вы можете попытаться установить разделитель вCSV как нечто иное, чем запятая, и взорвать его.

Или вы можете объединить другие элементы, прежде чем вставить их в БД:

$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);
...