Error in JOIN function of MYSQL PHP

0

My JOIN function is working, however, I do not use the tables, and even then, because the fields are identical, my inputs that have the field of the same name are filled even if they do not have a record of the id of the person in the table.

$result = "SELECT A.id, A.nome, A.inativo, B.tipo_endereco, B.cep, B.tipo_logr, B.nome_logr, B.nume_logr, B.comp_logr, B.cidade, B.bairro, B.uf,"                         
            . " C.operadora, C.telefone, C.email, C.homepage, C.skype, D.cnpj, D.im, D.ie, D.iest, D.cnae, D.razao_social, E.cpf, E.sexo, E.nacionalidade,"             
            . " E.rg, E.orgao_emissor, E.estado_civil, E.data_nascimento AS data_nascimento_pf, F.codigo, F.funcionario, F.data_nascimento AS data_nascimento_func FROM PESSOA A"                                                                                 
            . " LEFT OUTER JOIN CADEND B ON (A.ID = B.ID_PESSOA) "                                                                                                       
            . " LEFT OUTER JOIN CADCONT C ON (B.ID_PESSOA = C.ID_PESSOA) "                                                                                              
            . " LEFT OUTER JOIN PJURIDIC D ON (C.ID_PESSOA = D.ID_PESSOA) "                                                                                             
            . " LEFT OUTER JOIN PFISICA E ON (D.ID_PESSOA = E.ID_PESSOA) "
            . " LEFT OUTER JOIN CADFUNC F ON (E.ID_PESSOA = F.ID_PESSOA) WHERE A.id='$id' LIMIT 1";

    $resultado = $conn->query($result);

    // DECLARA A VARIAVEL
    $valores = array();

    if($resultado){
        $row = mysqli_fetch_assoc($resultado);
        $valores['nome'] = $row['nome'];
        $valores['inativo'] = $row['inativo'];
        $valores['id'] = $row['id'];
        $valores['tipo_endereco'] = $row['tipo_endereco'];
        $valores['cep'] = $row['cep'];
        $valores['tipo_logr'] = $row['tipo_logr'];
        $valores['nome_logr'] = $row['nome_logr'];
        $valores['nume_logr'] = $row['nume_logr'];
        $valores['comp_logr'] = $row['comp_logr'];
        $valores['cidade'] = $row['cidade'];
        $valores['bairro'] = $row['bairro'];
        $valores['uf'] = $row['uf'];
        $valores['operadora'] = $row['operadora'];
        $valores['telefone'] = $row['telefone'];
        $valores['email'] = $row['email'];
        $valores['homepage'] = $row['homepage'];
        $valores['skype'] = $row['skype'];
        $valores['cnpj'] = $row['cnpj'];
        $valores['im'] = $row['im'];
        $valores['ie'] = $row['ie'];
        $valores['iest'] = $row['iest'];
        $valores['cnae'] = $row['cnae'];
        $valores['razao_social'] = $row['razao_social'];
        $valores['cpf'] = $row['cpf'];
        $valores['sexo'] = $row['sexo'];
        $valores['nacionalidade'] = $row['nacionalidade'];
        $valores['rg'] = $row['rg'];
        $valores['orgao_emissor'] = $row['orgao_emissor'];
        $valores['estado_civil'] = $row['estado_civil'];
        $valores['data_nascimento_pf'] = $row['data_nascimento_pf'];
        $valores['codigo'] = $row['codigo'];
        $valores['funcionario'] = $row['funcionario'];
        $valores['data_nascimento_func'] = $row['data_nascimento_func'];
    }

In this case I left the F.data_name for example, I give JOIN but there is no employee record in this table CADFUNC so the return I have are the fields of the blank form but, the date comes filled with the value of the table input of physical person PFISICA

    
asked by anonymous 20.10.2017 / 17:24

1 answer

2

Although you use an alias ( alias ) for the table (in the query), this is only recognized by the database.

You need to add an alias to the column as well, because fetch the driver does not know the name of the tables and only cares about the column name.

SELECT
    E.data_nascimento as data_nascimento_pf
    F.data_nascimento as data_nascimento_func
    /** restante do sql **/

And, later in PHP, just recover through alias :

echo $row['data_nascimento_pf'];
echo $row['data_nascimento_func'];

Update

Your problem is right here:

$valores['data_nascimento'] = $row['data_nascimento_pf'];
$valores['data_nascimento'] = $row['data_nascimento_func'];

You are assigning two distinct values in the array position.

Furthermore, what is going on from one variable ( $row ) to the other ( $valores )?

Use the variable you want directly:

$valores = mysqli_fetch_assoc($resultado);
    
20.10.2017 / 17:36