TAMANHO DO INSERT

1. TAMANHO DO INSERT

FRANCISCO SALES
netocazuza

(usa Ubuntu)

Enviado em 23/11/2019 - 22:00h

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.


  


2. Re: TAMANHO DO INSERT

berghetti
berghetti

(usa Debian)

Enviado em 25/11/2019 - 19:05h

se a limitação é o tamanho da entrada,
quebra a instrução.



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

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



3. ESSA É MINHA DÚVIDA

FRANCISCO SALES
netocazuza

(usa Ubuntu)

Enviado em 25/11/2019 - 19:16h

Era exatamente isso que eu gostaria de saber amigo. Como quebrar essa instrução? Não estou conseguindo é fazer isso. Nâo sei se devo quebrar no INSERT, ou no VALUES, ou nos dois.


4. Re: TAMANHO DO INSERT

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/11/2019 - 20:09h


[quote]netocazuza escreveu:

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);


Uma alternativa é fazer um laço e inserir um a um no banco de dados....
Exemplo, não testado....
for ($i = 1; $i <= 200; $i++) {
$sql = "insert into tabela(numero$i) values ('$numero$i')";
$con->exec($sql);

}
Att.: Marcelo Oliver


5. Re: TAMANHO DO INSERT

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/11/2019 - 20:38h

[...] Uma outra particularidade, é que para ser mais produtivo, escrevo o código diretamente no servidor em produção, via terminal com o comando vim. [...]


(-_-)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts