Ir para conteúdo
Fórum Script Brasil
  • 0

INSERT com as linhas de um array


rafaelpereirap

Pergunta

Bom dia. Tenho um código que insere dados em uma tabela no banco de dados da ORACLE. Recebo um array, percorro ele com um foreach e vou inserindo conforme o laço vai repetindo. O que acontece é que ele só insere a primeira linha do array. Para tirar a dúvida criei outro array com informações fixas e quando passou pelo foreach ele inseriu normalmente as duas linhas que criei manualmente.

Alguém tem alguma ideia do que pode ser? Estarei postando o código.

//Trecho que realiza o insert

foreach ($arrayItensViasoft as $item) {

        //Instrução
        $sql = "INSERT INTO U_LOGISTICA(U_LOGISTICA_ID,
                                        ESTAB,
                                        SERIE,
                                        NUMERO,
                                        SEQITEM,
                                        ITEM,
                                        DESCRICAO,
                                        QTDA,
                                        GRUPO,
                                        DESCRICAOGRUPO,
                                        DATAPROGRAMADA,
                                        DATAINCLUSAO,
                                        OBSERVACAO,
                                        ENTREGUE)
                                 VALUES((SELECT MAX(U_LOGISTICA_ID)+1 FROM U_LOGISTICA),
                                        '".$item['estab']."',
                                        '".$item['serie']."',
                                        '".$item['numero']."',
                                        '".$item['seqItem']."',
                                        '".$item['item']."',
                                        '".$item['descricao']."',
                                        '".$item['qtd']."',
                                        '".$item['grupo']."',
                                        '".$item['descricaoGrupo']."',
                                        '".$item['dataProgramada']."',
                                        '".$item['dataInclusao']."',
                                        '".$item['obs']."',
                                        'N'
                                        )";


        //Retorno
        $retorno = Self::executeOCI($sql, true);

}

 

 

//Array criado dinâmicamente (não está funcionando)

Array ( [0] => Array ( [estab] => 2 [serie] => OC [numero] => 56834 [seqItem] => 1 [item] => 56834 [descricao] => MOSAIC - 20.00.20 [qtd] => 12 [grupo] => 24002 [descricaoGrupo] => FERTILIZANTES CONVENCIONAIS [dataProgramada] => 10-11-22 [dataInclusao] => 01-11-22 [obs] => ) [1] => Array ( [estab] => 2 [serie] => PFA [numero] => 42287 [seqItem] => 1 [item] => 42287 [descricao] => FERTIPAR - 21.00.00 SULFATO AMONIA [qtd] => 1,5 [grupo] => 24002 [descricaoGrupo] => FERTILIZANTES CONVENCIONAIS [dataProgramada] => 15-11-22 [dataInclusao] => 01-11-22 [obs] => ) [2] => Array ( [estab] => 2 [serie] => PV [numero] => 73533 [seqItem] => 1 [item] => 73533 [descricao] => NUTRISAFRA - 00.15.00 ECOFOS [qtd] => ,1 [grupo] => 24002 [descricaoGrupo] => FERTILIZANTES CONVENCIONAIS [dataProgramada] => 01-12-22 [dataInclusao] => 01-11-22 [obs] => ) )

//Array manual (está funcionado)

Array ( [0] => Array ( [id] => 5 [estab] => 2 [serie] => PV [numero] => 1234 [seqItem] => 1 [item] => 012345 [descricao] => Opa [qtd] => 1 [grupo] => 1 [descricaoGrupo] => aloha [dataProgramada] => 01-10-22 [dataInclusao] => 10-01-22 [entregue] => N [obs] => ) [1] => Array ( [id] => 6 [estab] => 3 [serie] => PVX [numero] => 123456 [seqItem] => 2 [item] => 0123456789 [descricao] => Uepa [qtd] => 2 [grupo] => 2 [descricaoGrupo] => arrocha [dataProgramada] => 03-10-22 [dataInclusao] => 15-01-22 [entregue] => N [obs] => ) )

 

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Eu recebi muitas mensagens de erro de sintaxe no VS Code na hora que fui testar o seu primeiro Array.

Ele ficou assim:

<?php

$array=Array ( 
[0] => Array ( 
"estab" => 2,
"serie" => "OC", 
"numero" => 56834,
"seqItem" => 1,
"item" => 56834,
"descricao" => "MOSAIC - 20.00.20",
"qtd" => 12,
"grupo" => 24002,
"descricaoGrupo" => "FERTILIZANTES CONVENCIONAIS",
"dataProgramada" => "10-11-22",
"dataInclusao" => "01-11-22",
"obs" => null) );

As chaves são aspadas, as chaves e os valores são separados por vírgulas, a chave e o valor sempre vem em par (nunca vem sozinho como acontece com [obs] do seu exemplo). Que editor de texto você usa?

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

  • 0

Descobri o problema pessoal. O que aconteceu é em como a ORACLE recebe valores float. Estava passando com vírgula (ex: 1,2) porque era como o valor ficava registrado depois de inserido mas ele deveria ser passado com ponto (ex: 1.2). Por coincidência estava passando um array com três posições e a primeira passava e as outras não por não ser um valor float. Muito obrigado pela atenção.  

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...