Jump to content
Fórum Script Brasil
  • 0

GRAVAÇÃO BANCO PHP COM MYSQL


netocazuza

Question

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 to post
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148691
    • Total Posts
      644531
×
×
  • Create New...