ler e importar txt zipado

Olá
tenho uma aplicação de controle onde envio o arquivo txt zipado para leitura e insert no bd, acontece q não estou conseguindo inserir todos as linhas do arquivo, gravando somente uma (a primeira), não consigo ver onde estou errando.
Adaptei de uma aplicação onde importo um txt, ignorando o cabeçalho e linhas em branco se existirem, isto também não estou conseguindo no arquivo zipado,
Se puderem me ajudar, agradeço.
segue código

[code]
/////////////////////////////////////////
$pathFile = $this->Ini->path_doc . “/” . {arquivo};

$zip = zip_open($pathFile);

if ($zip)
{
while ($zip_entry = zip_read($zip))
{
echo “

”;
echo "Name: " . zip_entry_name($zip_entry) . “
”;

if (zip_entry_open($zip, $zip_entry))
  {
  $contents = zip_entry_read($zip_entry);
  echo "File Contents:<br/>";
  echo $contents;
  
  //if(strlen(trim($zip_entry)) >= 0) {
  
  $dados = explode(";", $contents, 1028);

  $campo1 = str_replace("'","",$dados[0]); //RETIRA O ' DA COLUNA
  $campo2 = str_replace("'","",$dados[1]);
  $campo3 = str_replace("'","",$dados[2]);
  $campo4 = str_replace("'","",$dados[3]);
  $campo5 = str_replace("'","",$dados[4]);
  $campo6 = str_replace("'","",$dados[5]);
  $campo7 = str_replace("'","",$dados[6]);
  $campo8 = str_replace("'","",$dados[7]);
  $campo9 = str_replace("'","",$dados[8]);
  $campo10 = str_replace("'","",$dados[9]);
  $campo11 = str_replace("'","",$dados[10]);
  $campo12 = str_replace("'","",$dados[11]);
  $campo13 = str_replace("'","",$dados[12]);
  $campo14 = str_replace("'","",$dados[13]);
  $campo15 = str_replace("'","",$dados[14]);
  $campo16 = str_replace("'","",$dados[15]);
  $campo17 = str_replace("'","",$dados[16]);
  $campo18 = str_replace("'","",$dados[17]);
  $campo19 = str_replace("'","",$dados[18]);
     $data = $campo9; 

$dia = substr($data, 0, 2);
$mes = substr($data, 3, 2);
$ano = substr($data, 6, 4);
$campo9_gravar = $ano."-".$mes."-".$dia;

$valor_bruto = floatval(str_replace(’,’, ‘.’, str_replace(’.’, ‘’, $campo6)));
$total_nfe = floatval(str_replace(’,’, ‘.’, str_replace(’.’, ‘’, $campo17)));
$quantidade = floatval(str_replace(’,’, ‘.’, str_replace(’.’, ‘’, $campo4)));

echo
$inserir = sc_exec_sql(“INSERT into anual(ncm, descricao, cfop, quantidade, unidade, valor_bruto, opracao_nfe, situacao_nfe, data_nfe, ie_emitente, uf_emitente, ie_destinatario, uf_destino, modelo_df, serie_nfe, nfe, total_nfe, situacao_aim, chave_acesso, ano, cliente_id, ncm2, data_lancamento) VALUES (’$campo1’, ‘$campo2’, ‘$campo3’, ‘$quantidade’, ‘$campo5’, ‘$valor_bruto’, ‘$campo7’, ‘$campo8’, ‘$campo9_gravar’, ‘$campo10’, ‘$campo11’, ‘$campo12’, ‘$campo13’, ‘$campo14’, ‘$campo15’, ‘$campo16’, ‘$total_nfe’, ‘$campo18’, ‘$campo19’,’{ano}’,
‘{cliente}’,’$campo1’, ‘{data_lancamento}’)”); //INSERE CADA LINHA

     } // FECHA REMOÇÃO DA LINHA EM BRANCO
  //}
  
  
  
  zip_entry_close($zip_entry);
 }
  [/code]

olá novamente está exibindo na tela todos os dados do arquivo conforme echo $contents;, apresenta na tela a mensagem de sucesso conforme codigo q implementei
if($inserir == true){
echo"Sucesso";}
else{
echo"Erro";}
}
mas no banco de dados só insere a primeira linha do arquivo
aguardo ajuda

Pelo que entendo, vc deve colocar um laço para movimentar o processamento entre as linhas lidas.

Jorge
no codigo q postei não tem o laço, mas tentei e não consegui, com o for continuou inserindo só um, com while ficou infinito. Como sou iniciante me perdi no código. Não sei se while do zip (no inicio do código) esteja influenciando.