Jump to content
Fórum Script Brasil
  • 0

INCLUIR MULTIPLAS LINHAS NO BANCO DE DADOS


diego_dias

Question

Srs. boa noite 

 

Estou tentando criar um procedure que vai fazer a leitura do meu insert e vai lançar no banco de dados 1 ou mais linhas a partir de um laço de repetição .

Estou declarando uma variavel i e que por padrão receberá o valor 10. Ou seja, após enviar meu formulario, em teoria o comando incluirá outras 10 linhas, porém não estou tendo sucesso. Alguém pode me ajudar ? 

 

CREATE PROCEDURE myproc()

DECLARE i int DEFAULT 10;

BEGIN 
    
    
WHILE i <=10 DO      

        $resultado = "INSERT INTO tb_lancamentos (conta_contabil, parcelamento, dt_vencimento, valor_nota, created) VALUES ('$conta_contabil', '$parcelamento', '$dt_vencimento', '$valor_nota', NOW())";     
        $resultado_usuario = mysqli_query($conn, $resultado);

SET i=i+1;

END WHILE;

END;

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

A sintaxe do stored procedure do MySQL é assim:

CREATE DEFINER=`root`@`localhost` PROCEDURE `MyProc`()
BEGIN
declare i int;
set i = 1;
loop_label: loop
	if i > 10 then leave loop_label; end if;
	insert into tb_lancamentos (conta) values ("caixa");
    set i = i+1;
end loop;
END

Se você comparar com o seu código, você notará que eu usei uma string "caixa" ao invés de uma variável, mas o resultado é o mesmo, ou seja, o procedimento vai registrar dez vezes a mesma conta. Aqui o problema é de lógica: ninguém registra dez vezes o mesmo lançamento.

Mas se a ideia é fazer vários lançamentos diferentes, o melhor é usar o PHP, assim:

<?php
$lançamentos=["caixa","banco","despesa","receita"];
$mysqli=new mysqli("localhost","root","","astudy");
foreach($lançamentos as $lançamento){
    $query=$mysqli->query("insert into tb_lancamentos (conta) values ('$lançamento')");}
echo ($query) ? "ok" : $mysqli->error;

Por aqui você pode ver que é bem mais fácil usar a gramática do PHP do que a gramática do stored procedures do MySQL.

Link to comment
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.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.9k
×
×
  • Create New...