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

GRAVAÇÃO BANCO PHP COM MYSQL


netocazuza

Pergunta

Tenho um sistema em php que grava os dados da seguinte forma: Existe um formulário em html, que captura os dados, e um arquivo de inserção em php que recebe os dados do formulário, e grava no banco. Tudo isso está funcional, e vai sendo ampliado, de acordo com a necessidade, então vou tentar ilustrar o código aqui:

$numero1 = $_POST['numero1'];
.
.
.
$numero100 = $POST['numero100']; 


Esses dados vem do formulário, e até esse número 100, está funcional. Após receber esses números, é preparado um SQL para inserção no banco, que fica mais ou menos assim:

$sql = "insert into tabela(numero1, ...,numero100) values ('$numero1', ..., 'numero100')";
$con->exec($sql); 


Tudo isso está funcionando, e deu tudo certo, até aproximadamente o registro 100 (não sei o número exato) pois é uma necessidade do sistema que ele seja assim, e as variáveis sejam criadas, quando a ocasião se apresenta.
Ocorre, que de uns dias pra cá, não consigo mais criar nenhuma variável, e o sistema travou. Depois de muitos testes, descobri que essa linha de inserção no $sql, fica como uma linha inteira e única, e é exatamente essa a limitação, que é 3.000 caracteres, espaços ou colunas, aparentemente. O travamento decorre disso. Tudo que for feito à partir da linha 3.000, é simplesmente ignorado, e gera um erro no sistema.
Normalmente escrevo o código diretamente do terminal linux, usando o comando vim, salvo e já testo no navegador, e a minha dúvida é se essa limitação é do comando vim, do mysql, ou do PHP, e como fazer para contornar isso?
Uso Linux Ubuntu 16.04 LTS, PHP 7 e mysql com phpmyadmin. Uma outra particularidade, é que para ser mais produtivo, escrevo o código diretamente no servidor em produção, via terminal com o comando vim.
Gostaria apenas de uma forma de quebrar essa linha, de modo que essa inserção continue sendo feita da mesma maneira.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Pra ser sincero não sei qual é exatamente o erro que está acontecendo, o MySQL tem um limite de caracteres que ele interpreta em uma única consulta, mas acredito que é bem maior do que 3000.

Mas acho que o grande x da questão é a modelagem do seu Banco de Dados, se você tem tantos números relacionados a alguma outra informação, compensa fazer uma outra tabela com três campos uma primary_key, uma chave estrangeira relacionando com a tabela principal e o número em si, provavelmente vai ter que reescrever mais código do que gostaria agora, mas te garanto que você nunca mais vai passar pelo mesmo problema.

Outra no formulário HTML em vez de colocar numero1, numero2... no atributos name de cada input coloca numero[] em todos o PHP vai entender que numero dentro de $_POST é um array e vai te retornar certinho dentro de $_POST['numero'].

Link para o comentário
Compartilhar em outros sites

  • 0

Você está corretíssimo Leonardo. Realmente esse meu código ignora as boas práticas de programação. Fui construindo de acordo com a necessidade, e isso deixo o código muito ruim. Quando tiver um tempo, vou tentar reescrever assim. Por ora, estou quebrando a linha no insert e values, sempre após a vírgula, e tá dando certo.

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,3k
×
×
  • Criar Novo...