Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema em uma Query

bom dia. Tenho 2 queries (multi_query) na classe (inserePessoa), a segunda está funcionando, mas a primeira ao ser executada está fazendo 2 registros na tabela, ao invés de 1 só , não entendo porque.

function inserePessoa($conexao, $pessoa)
{
    $query = "insert into pessoa (nome, endereco, numero, bairro, cidade, uf, cep,
    cpf, cnpj, data_nascimento, rg, telefone, email, estado_civil, nacionalidade,
     profissao, complemento, tipo_pessoa_id, parte_id, natureza_juridica_id, data_cadastro,
     perfil_id) values ('{$pessoa->getNome()}','{$pessoa->getEndereco()}',
     {$pessoa->getNumero()},'{$pessoa->getBairro()}','{$pessoa->getCidade()}',
     '{$pessoa->getUf()}',{$pessoa->getCep()}, {$pessoa->getCpf()}, '{$pessoa->getCnpj()}',
      {$pessoa->getData_nascimento()},{$pessoa->getRg()},{$pessoa->getTelefone()},
      '{$pessoa->getEmail()}','{$pessoa->getEstado_civil()}','{$pessoa->getNacionalidade()}',
      '{$pessoa->getProfissao()}','{$pessoa->getComplemento()}',{$pessoa->getTipo_pessoa()},
      {$pessoa->getParte()},{$pessoa->getNatureza_juridica()},{$pessoa->getData_cadastro()},
      {$pessoa->getPerfil()});";

    if (mysqli_query($conexao, $query)) {
        $id_pessoa = mysqli_insert_id($conexao);
        //var_dump($id_pessoa);exit;

        $query .= "insert into caso_pessoa (pessoa_id, caso_id) values (
               {$id_pessoa}, {$pessoa->getIdcaso()})";

//var_dump($query);exit;

        return mysqli_multi_query($conexao, $query);

    }

Fiz um teste no return utilizando mysqli_query ao invés de multi_query porém ele não insere a segunda query quando volto a utilizar multi_query ele insere a segunda query mas insere 2 registros na primeira query.

Esse é o var_dump das queries que seu eu copiar e fizer a query diretamente no PHPMyadmin funciona perfeitamente.

string(580) "insert into pessoa (nome, endereco, numero, bairro, cidade, uf, cep, cpf, cnpj, data_nascimento, rg, telefone, email, estado_civil, nacionalidade, profissao, complemento, tipo_pessoa_id, parte_id, natureza_juridica_id, data_cadastro, perfil_id) values ('Ari da Silva','Rua Conceição do Arroio', 11,'Jardim Franca','São Paulo', 'SP',02339010, 11111111111, 'NULL', 20190825,111111111,11111111111, 'w@sssss','Casado','Brasileiro', 'Do Lar','casa',1, 1,NULL,20190905062137, 9);insert into caso_pessoa (pessoa_id, caso_id) values ( 36, 2)" 

resultado no PHPMyadmin:

 1 linha inserida.
Inserted row id: 37 (A consulta demorou 0,0000 segundos.)
 1 linha inserida.
Inserted row id: 7 (A consulta demorou 0,0000 segundos.)
1 resposta
solução!

Pessoal, eu consegui resolver. Obrigado. Simples erros de sintaxe e não é multi_query. Esse é um caso simples de mysqli_insert_id. Segue o código correto e funcionando:

function inserePessoa($conexao, $pessoa)
{
    $query = "insert into pessoa (nome, endereco, numero, bairro, cidade, uf, cep,
    cpf, cnpj, data_nascimento, rg, telefone, email, estado_civil, nacionalidade,
     profissao, complemento, tipo_pessoa_id, parte_id, natureza_juridica_id, data_cadastro,
     perfil_id) values ('{$pessoa->getNome()}','{$pessoa->getEndereco()}',
     {$pessoa->getNumero()},'{$pessoa->getBairro()}','{$pessoa->getCidade()}',
     '{$pessoa->getUf()}',{$pessoa->getCep()}, {$pessoa->getCpf()}, '{$pessoa->getCnpj()}',
      {$pessoa->getData_nascimento()},{$pessoa->getRg()},{$pessoa->getTelefone()},
      '{$pessoa->getEmail()}','{$pessoa->getEstado_civil()}','{$pessoa->getNacionalidade()}',
      '{$pessoa->getProfissao()}','{$pessoa->getComplemento()}',{$pessoa->getTipo_pessoa()},
      {$pessoa->getParte()},{$pessoa->getNatureza_juridica()},{$pessoa->getData_cadastro()},
      {$pessoa->getPerfil()})";

    if (mysqli_query($conexao, $query)) {
        $id_pessoa = mysqli_insert_id($conexao);
        //var_dump($id_pessoa);exit;

        $query = "insert into caso_pessoa (pessoa_id, caso_id) values (
               {$id_pessoa}, {$pessoa->getIdcaso()})";

//var_dump($query);exit;

        return mysqli_query($conexao, $query);

    }