Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jhuan

Inserir vários dados ao mesmo tempo

Recommended Posts

Pessoal , bom dia ! A minha dúvida acredito ser bem simples. Tenho um script que faz uma consulta no mysql e gera uma tabela:

 

coluna 1 coluna 2 coluna 3

Título 1 Título 2 Título 3

Linha 1

Linha 2

Linha 3

 

Gostaria de saber se existe como eu realizar algum comando para fazer a operação inversa. Inserir no SQL todos os valores dessa tabela HTML. E como eu faria isso ?!?!

 

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente algo como isso:

INSERT INTO Table ( Column1, Column2 ) VALUES ( Value1, Value2 ), ( Value1, Value2 )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá

vc pode usar um loop for enquanto faz isso, ex:

 

$reg = 10 //número de registros
for ($i=0;$i<$reg;$i++){
  $insercao = "insert into tabela (colunas) values ('valores')";
  $exec = mysql_query($insercao);
]

A grosso modo é isso.

nesse caso utilizei "$reg" como número de registros, ou de linhas para o "for" percorrer. Pode usar outras formas - array.

Ok este loop irá repetir o processo até o numero de dados a inserir até o número estipulado ,e, dentro deste loop, irá fazer n inserções.

 

Lógico que isso é um algorítimo bem simples, há outras maneiras de implementar esse loop, bem mais elegantes.

 

Espero ter ajudado, qualquer coisa dê um grito :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa , bem legal a dica de vocês. mas acredito eu não ser suficiente para sanar meu problema.

 

utilizando o script:

<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);

$id_assoc = $_POST["id_assoc"];

$User = $_SESSION["UsuarioNome"];
$Userid = $_SESSION["UsuarioID"];

$sql = "INSERT INTO scrap_request(id_association,requester)VALUES('$id_assoc','$Userid')";

if(isset($_POST['request']) && $_POST['request'] == 'Send Request'){
  		
$select = mysql_query("SELECT * FROM scrap_request WHERE id_association = '$id_assoc'");

if(mysql_num_rows($select) >= 1){

echo "<div id='attention-div'> REQUEST ALREADY REGISTERED! </div>";

}else{

  		echo "<div id='right-div'> REQUEST DONE SUCCESFULLY! </div>" ;
		mysql_query($sql);
		
			}
		}

?>

Eu consigo pegar o ULTIMO VALOR da COLUNA. Eu gostaria de pegar TODOS OS VALORES dessa determinada coluna.

 

Libraries%5CPictures%5Cfigura.png

 

Assim como observado na figura. Gostaria de salvar OS VALORES DESSES INPUTS UM DE CADA VEZ. Será possível algo assim ?!

 

Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostaria de salvar OS VALORES DESSES INPUTS UM DE CADA VEZ.

 

A questão de fazer isso é a mesma questão loop do GCAS, quanto mais consultas ao banco de dados menos eficiente é o sistema, melhor inserir 10 linhas em 1 consulta do que 10 linhas em 10 consultas. Não que seja errado mas é preciso considerar este preço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão de fazer isso é a mesma questão loop do GCAS, quanto mais consultas ao banco de dados menos eficiente é o sistema, melhor inserir 10 linhas em 1 consulta do que 10 linhas em 10 consultas. Não que seja errado mas é preciso considerar este preço.

O ideal é inserir TUDO direto no banco, crie uma string com todos os inserts e execute ele.

pesa muito menos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá

 

vc pode usar um loop for enquanto faz isso, ex:

 

$reg = 10 //número de registros
for ($i=0;$i<$reg;$i++){
  $insercao = "insert into tabela (colunas) values ('valores')";
  $exec = mysql_query($insercao);
]

A grosso modo é isso.

 

nesse caso utilizei "$reg" como número de registros, ou de linhas para o "for" percorrer. Pode usar outras formas - array.

 

Ok este loop irá repetir o processo até o numero de dados a inserir até o número estipulado ,e, dentro deste loop, irá fazer n inserções.

 

Lógico que isso é um algorítimo bem simples, há outras maneiras de implementar esse loop, bem mais elegantes.

 

Espero ter ajudado, qualquer coisa dê um grito :D

 

 

esse modo esta errado por que você cria varias querys

nesse exemplo que ele se referiu seria assim

 

 

$reg = 10 //número de registros
$insercao = null;
for ($i=0;$i<$reg;$i++){
  $insercao .= "insert into tabela (colunas) values ('valores');";
  
}
$exec = mysql_query($insercao);

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

esse modo esta errado por que você cria varias querys

nesse exemplo que ele se referiu seria assim

 

 

$reg = 10 //número de registros
$insercao = null;
for ($i=0;$i<$reg;$i++){
  $insercao .= "insert into tabela (colunas) values ('valores');";
  
}
$exec = mysql_query($insercao);

mas isso ai n são varias query para o mysql_query() executar?

 

na documentação diz

 

mysql_query() sends a unique query (multiple queries are not supported)

 

http://php.net/manual/en/function.mysql-query.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas isso ai n são varias query para o mysql_query() executar?

 

na documentação diz

mas o tempo de execução e bem mais rápido vc usando uma query do que usar varias querys.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, realmente considerando a performance, tenho uma sugestão:

 

$reg = 10 //número de registros
$insercao = "insert into tabela (colunas) values ";
for ($i=0;$i<$reg;$i++){
  $valores .= "('valores'),";
  
}

$v1 = substr($valores, 0, -1);

$ins_qry = $insercao.$v1;

$exec = mysql_query($ins_qry);

// agora verifica se foi

if ($exec){
  echo "inserido com sucesso";
}else{
  echo "problemas ao inserir";
}

nesse caso, vai fazer um loop apenas com os valores e a parte das queries com as colunas fica tranquila. ficando assim:

 

insert into tabelas (colunas) values ('valores1'), ('valores2'), ('valores3');

 

e por aí vai :D

espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa , bem legal a dica de vocês. mas acredito eu não ser suficiente para sanar meu problema.

 

utilizando o script:

<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);

$id_assoc = $_POST["id_assoc"];

$User = $_SESSION["UsuarioNome"];
$Userid = $_SESSION["UsuarioID"];

$sql = "INSERT INTO scrap_request(id_association,requester)VALUES('$id_assoc','$Userid')";

if(isset($_POST['request']) && $_POST['request'] == 'Send Request'){
  		
$select = mysql_query("SELECT * FROM scrap_request WHERE id_association = '$id_assoc'");

if(mysql_num_rows($select) >= 1){

echo "<div id='attention-div'> REQUEST ALREADY REGISTERED! </div>";

}else{

  		echo "<div id='right-div'> REQUEST DONE SUCCESFULLY! </div>" ;
		mysql_query($sql);
		
			}
		}

?>

Eu consigo pegar o ULTIMO VALOR da COLUNA. Eu gostaria de pegar TODOS OS VALORES dessa determinada coluna.

 

Libraries%5CPictures%5Cfigura.png

 

Assim como observado na figura. Gostaria de salvar OS VALORES DESSES INPUTS UM DE CADA VEZ. Será possível algo assim ?!

 

Obrigado,

 

Olá meu caro Jhuan.

 

Pelo que entendi através desta postagem, é que você não quer inserir muitos dados de uma só vez, e sim, ver todos os dados de uma vez. Sendo assim é simplesmente fazer um loop. Vou dar um exemplo:

 

usando a sua variável select.

 

for($i=0;$i<mysql_num_rows($select);$i++){
  $linha = mysql_fetch_array($select);
  $dado1 = $linha['coluna'];
}

Esse o porque de você não conseguir pegar todos e sim o último registro. Desse jeito que você fez, o padrão é apenas pegar o último resultado. E já usando um loop, ele vai consultando o banco até o número de registros mostrado na query - número dado pela função "mysql_num_rows()".

 

Espero ter ajudado :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.