I make a query in the database through concatenations in my query and returns empty

Asked

Viewed 38 times

-2

I make my query in the bank with the following function and is not returning anything.

    function pesquisarPaciente2($nome_paciente = "", $nascimento_paciente = "", $id_paciente = ""){

    global $pdo;

    $filtrostring = array("1=1");
    $array = array();

    if(!empty($nome_paciente)){
        $filtrostring[] = 'nome LIKE :nome_paciente"';

    }

    if(!empty($nascimento_paciente)){
        $filtrostring[] = 'data_nasc = :nascimento_paciente"';

    }

    if(!empty($id_paciente)){
        $filtrostring[] = 'id = :id_paciente"';

    }



    $sql = $pdo->prepare("SELECT id, nome, data_nasc FROM tbl_pacientes WHERE  ".implode(' AND ', $filtrostring));


    print_r($sql); 
    exit;


    if(!empty($id_paciente)){
        $sql->bindValue(":id_paciente", $id_paciente);

    }   


    if(!empty($nome_paciente)){
        $nome_paciente = "%".$nome_paciente."%";
        $sql->bindValue(":nome_paciente", $nome_paciente);

    }   

    if(!empty($nascimento_paciente)){
        $sql->bindValue(":nascimento_paciente", $nascimento_paciente);

    }   

    $sql->execute();

    if($sql->rowCount() > 0){
            
        $array = $sql->fetchAll();

    }


    return $array;
    exit;




}

When giving print_r(), returns the following message

inserir a descrição da imagem aqui

When executing this query directly in the database replacing by the values, it normally runs without any error.

1 answer

0

The problem is in single double quotes at the same time, according to the code below.

if(!empty($nome_paciente)){
    $filtrostring[] = 'nome LIKE :nome_paciente"';

}

The correct way to work is to put double quotes only like this, "LIKE name :patient name". After adjusted it worked perfectly.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.