Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia, esto tentando inserir dados de um formulário em duas tabelas ao mesmo tempo.
Gostaria de sua ajuda!
Arquivo Insere
$conexao = conexao::getInstance();
// Recebe os dados enviados pela submissão
$acao = (isset($_POST['acao'])) ? $_POST['acao'] : '';
$id = (isset($_POST['id'])) ? $_POST['id'] : '';
$nome = (isset($_POST['nome'])) ? $_POST['nome'] : '';
$funcao = (isset($_POST['funcao'])) ? $_POST['funcao'] : '';
$cpf = (isset($_POST['cpf'])) ? str_replace(array('.','-'), '', $_POST['cpf']): '';
$status = (isset($_POST['status'])) ? $_POST['status'] : '';
$sql = 'INSERT INTO historico (registro_ministro, descricao, data_registro, usuario )
VALUES(:registro_ministro, :descricao, :data_registro, :usuario )';
$stm = $conexao->prepare($sql);
$stm->bindValue(':registro_ministro', $registro_ministro);
$stm->bindValue(':descricao', $descricao);
$stm->bindValue(':data_registro', $data_registro);
$stm->bindValue(':usuario', $usuario);
$retorno = $stm->execute();
if ($retorno):
echo "<div class='alert alert-success' role='alert'>Registro editado com sucesso, aguarde você está sendo redirecionado ...</div> ";
else:
echo "<div class='alert alert-danger' role='alert'>Erro ao editar registro!</div> ";
endif;
echo "<meta http-equiv=refresh content='0;URL=ministros.php'>";
endif;
$sql = 'INSERT INTO ministro (nome, cpf, funcao, status )
VALUES(:nome, :cpf, :rg, :funcao, :status, )';
$stm = $conexao->prepare($sql);
$stm->bindValue(':nome', $nome);
$stm->bindValue(':cpf', $cpf);
$stm->bindValue(':status', $status);
$stm->bindValue(':funcao', $funcao);
Porém só executa o ultimo código não executa o primeiro o que pode ser ?Obrigado pela dica, resolvi aqui!
Preciso apenas agora que ele pegue o id gerado na inserção do primeiro e grave no campo da tabela 2.
como eu poderia pegar o id?
Você pode pegar o último ID inserido no primeiro através de uma consulta, pegando o maior ID da tabela, ex:
SELECT MAX(ID) FROM suaTabela
Realiza a consulta, pega o retorno e passa pra sua segunda inserção.
Essa é uma maneira estática, não é segura quando mais de uma pessoa faz inserção ao mesmo tempo na tabela, se for apenas uma pessoa funciona bem, deve ter outras maneiras de fazer.Se estiver usando PDO:
$stmt = $db->prepare("...");
$stmt->execute();
$id = $db->lastInsertId();
ele esta na mesma variavel, ai o segundo substitui o primeiro
alem de alterar o nome da variavel você precisa duplicar o codigo que insere elas, provavelmente esta algumas linhas abaixo desse codigo