o que apresentas está um bocado complicado de perceber, mas desconfio que o que pretendes seja algo deste género
function clearData($data) {
if (!is_array($data))
return utf8_encode(str_replace(array('\t'), array(''), trim($data)));
foreach ($data as $key => $value)
$data[$key] = clearData($value);
return $data;
}
if (isset($_FILES['arquivo']) && $_FILES['arquivo']['error'] == 0) {
$indices = ['ref_reg', 'modelo', 'cor', 'tamanho', 'quant', 'num_cliente', 'cliente', 'tipo', 'tecido','etiq_col'];
$fd = fopen($_FILES['arquivo'], 'r');
$idx = -1;
$records = [];
while ($csv = fgetcsv($fd)) {
$idx++;
clearData($csv);
// validate
if (count($csv) != count($indices)) {
echo "<pre>Quantidade de dados inadequada na linha: $idx<br></pre>";
continue;
}
// record processing
$csv['t'. $csv[$indices['tamanho']]] = $csv[$indices['quant']];
if (($pos = strpos($csv[$indices['modelo']], '*')) !== NULL) {
$csv[$indices['etiq_col']] = substr($csv[$indices['modelo']], $pos);
$csv[$indices['modelo']] = substr($csv[$indices['modelo']], 0, $pos);
}
$records[] = $csv;
}
fclose($fd)
// prepared statement
$stmt = $sqli->prepare('insert into `$table` (`' . implode('`,`', $indices) . '`)
values (' . implode(', ', array_fill(0, count($indices), '?')) . ')';
// records insert SQL command execution
foreach ($records as $idx => $record) {
$stmt->bind_param(implode('', array_fill(0, count($indices), 's')),
$records[$idx]);
$stmt->execute();
}
}
↧