0
Good morning, how would I make this entry at once fill several tables? Mine is not working...
See my code:
// Atribui uma conexão PDO
$conexao = conexao::getInstance();
// Recebe os dados enviados pela submissão
$acao = (isset($_POST['acao'])) ? $_POST['acao'] : '';
$id = (isset($_POST['id'])) ? $_POST['id'] : '';
$recibo = (isset($_POST['recibo'])) ? $_POST['recibo'] : '';
$data = (isset($_POST['data'])) ? $_POST['data'] : '';
$registro = (isset($_POST['registro'])) ? $_POST['registro'] : '';
$funcao = (isset($_POST['funcao'])) ? $_POST['funcao'] : '';
$nome = (isset($_POST['nome'])) ? $_POST['nome'] : '';
$dinheiro = (isset($_POST['dinheiro'])) ? $_POST['dinheiro'] : '';
$seguro = (isset($_POST['seguro'])) ? $_POST['seguro'] : '';
$outros = (isset($_POST['outros'])) ? $_POST['outros'] : '';
// Valida os dados recebidos
$mensagem = '';
if ($acao == 'editar' && $id == ''):
$mensagem .= '<li>ID do registros desconhecido.</li>';
endif;
// Se for ação diferente de excluir valida os dados obrigatórios
if ($acao != 'excluir'):
if ($mensagem != ''):
$mensagem = '<ul>' . $mensagem . '</ul>';
echo "<div class='alert alert-danger' role='alert'>".$mensagem."</div> ";
exit;
endif;
// Constrói a data no formato ANSI yyyy/mm/dd
//$data_temp = explode('/', $data_nascimento);
//$data_ansi = $data_temp[2] . '/' . $data_temp[1] . '/' . $data_temp[0];
endif;
// Verifica se foi solicitada a inclusão de dados
if ($acao == 'incluir'):
foreach($_POST["produto"] as $produto) {
$sql = ("INSERT INTO financeiro (recibo, data, registro, funcao, nome, dinheiro, seguro, outros)
VALUES('.$produto.')") or die('Erro query.<br>Mensagem do servidor: '.mysql_error());
$stm = $conexao->prepare($sql);
$stm->bindValue(':recibo', $recibo);
$stm->bindValue(':data', $data);
$stm->bindValue(':registro', $registro);
$stm->bindValue(':funcao', $funcao);
$stm->bindValue(':nome', $nome);
$stm->bindValue(':dinheiro', $dinheiro);
$stm->bindValue(':seguro', $seguro);
$stm->bindValue(':outros', $outros);
$retorno = $stm->execute();
}
First of all, put the prepare out of the loop, otherwise it makes no sense. The advantage of using prepare is the query be reused (in mysqli. in PDO does not always work well so, depending on the case the prepare is half "donkey" pq is simulated)
– Bacco
Ideal is to generate the string in the loop
$values .=$produto ."'),("; depois fora do loop retire os 3 últimos caracteres da string
$values= substr($values,0,-3);e faça o insert de uma vez só
VALUES ($values)`– user60252
Excuse my ignorance, I’m beginner, I don’t understand how to do...
– Marcones Borges