Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Problemas com múltiplas queries

As funções no arquivo.

function gravaDenunciado($conexao, $nome, $numero,$local,$estado,$cidade,$referencia,$contato)
{
    mysqli_query($conexao, "insert into denunciado(nome, numero,local,estado,cidade,referencia,contato) values('{$nome}','{$numero}', '{$local}','{$estado}','{$cidade}','{$referencia}','{$contato}')");
        $id_denunciado= mysqli_insert_id($conexao);
        return $id_denunciado;

}

function gravaDenunciante($conexao, $nome1, $profissao, $cpf,$telefone,$email)
{
    mysqli_query($conexao, "insert into denunciante(nome, profissao,cpf, telefone, email) values ('{$nome1}','{$profissao}', '{$cpf}', '{$telefone}', '{$email}')");
    $id_denunciante = mysqli_insert_id($conexao);
    return $id_denunciante;
}


function gravaDenuncia($conexao, $denunciado, $denunciante, $denuncia)
{
    mysqli_query($conexao,"insert into denuncia(denunciado, denunciante, denuncia) values('{$denunciado}','{$denunciante}', '{$denuncia}'");
    $id= mysqli_insert_id($conexao);
    return $id;

}

Abaixo como chamo as funções

$denunciado = gravaDenunciado($conexao, $nome, $numero,$local,$estado,$cidade,$referencia,$contato);
$denunciante = gravaDenunciante($conexao, $nome1, $profissao, $cpf,$telefone,$email);
$id=gravaDenuncia($conexao,$denunciado,$denunciante,$denuncia);

Ele executa as duas primeiras funções, mas não executa a última.

9 respostas

Boa tarde Thiago! Qual sua dúvida?

Oi Thiago, não ficou claro o problema. Pode explicar melhor o que acontece?

Desculpa, gente. Na hora que editei apaguei sem querer.

Ele executa as duas primeiras funções e não executa a última.

A função mysqli_insert_id() retorna o ID gerado pela consulta em uma tabela com uma coluna com o atributo AUTO_INCREMENT. Se a última consulta não foi um INSERT ou UPDATE ou se a tabela modificada não tem uma coluna com o atributo AUTO_INCREMENT, esta função irá retornar zero. -> http://php.net/manual/pt_BR/mysqli.insert-id.php

Dito isso as suas tabelas possuem alguma coluna AUTO_INCREMENT ? E essa última tabela possui restrições de chave estrangeira ? Seria interessante se vc conseguisse postar aqui o erro que ocorre.

Sim, todas elas possuem o id como primary key auto incrementável. Nenhuma delas possuem chaves estrangeiras. O pior é que não aparece nenhum erro pra mim. Ele executa as duas queries, insere no banco normalmente, carrega a página normalmente... A única coisa que não faz é realizar a última query.

Boa tarde Thiago!

Joga essa query:

"insert into denuncia(denunciado, denunciante, denuncia) values('{$denunciado}','{$denunciante}', '{$denuncia}'"

Dentro de uma variável e dá um echo ou var_dump nela.

Se ela aparecer ok, tenta rodar direto no banco.

Testa aí e me dá um retorno!

Thiago, tenta imprimir o erro, se ele não realiza, com certeza deve informar alguma coisa que fez dar errado.

echo mysqli_error($conexao);

Esse foi o resultado do var_dump. Ao executar no banco, não houve nenhum problema.

insert into denuncia(denunciado, denunciante, denuncia) values('3','3', 'Vendendo comida estragada')' (length=100)

Quando eu faço : echo mysqli_error($conexao); ele mostra essa mensagem no cabeçalho da página.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
solução!

Funcionou. Depois de revisar a query da última função percebi que faltava um parênteses no final. Erro de quem está começando. Obrigado pela presteza, pessoal! E desculpem qualquer coisa.