Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Bom dia!
Estou tentando fazer uma consulta, utilizando PDO, e esta quando não passo parâmetro nenhum funciona, mas quando passo algum parâmetro não retorna.Acontece que meus parâmetros são opcionais, então o AND parametro = $parametro pode existir ou não dependendo do que foi selecionado.
Encontrei várias dicas no fórum, mas todos utilizavam parâmetros obrigatórios... ao final deste problema, montarei um turorial mais atualizado com certeza... :natalwink:
Será que você pode ajudar? Eis o código:
static function consultar(Model $vaga) {
try {
$conn = Conexao::obterConexao();
$str = "select v.*
from tab_vaga v
left outer join tab_vaga_perfil p
on v.cod_vaga = p.cod_vaga
where 1=1";
if ($vaga->get("cod_vaga")) {
$str .= " and v.cod_vaga = :cod_vaga";
}
if ($vaga->get("cod_tipo_profissional")) {
$str .= " and v.cod_tipo_profissional = :cod_tipo_profissional";
}
if ($vaga->get("nom_empregador")) {
$str .= " and nom_empregador like :nom_empregador";
}
if ($vaga->get("des_endereco")) {
$str .= " and des_endereco like :des_endereco";
}
if ($vaga->get("des_cidade")) {
$str .= " and des_cidade like :des_cidade";
}
if ($vaga->get("des_bairro")) {
$str .= " and des_bairro like :des_bairro";
}
if ($vaga->get("sig_uf")) {
$str .= " and sig_uf = :sig_uf";
}
if ($vaga->get("opt_perfil")) {
$str .= " and p.cod_tipo_perfil in (:opt_perfil)";
}
$str .= " group by v.cod_vaga, nom_empregador, des_bairro
order by v.nom_empregador";
$sql = $conn->query(trim($str));
if ($vaga->get("cod_vaga")) {
$sql->bindParam(":cod_vaga", $vaga->get("cod_vaga"), PDO::PARAM_STR);
}
if ($vaga->get("cod_tipo_profissional")) {
$sql->bindParam(":cod_tipo_profissional", $vaga->get("cod_tipo_profissional"), PDO::PARAM_STR);
}
if ($vaga->get("nom_empregador")) {
$sql->bindParam(":nom_empregador", "'%".$vaga->get("nom_empregador")."%'", PDO::PARAM_STR);
}
if ($vaga->get("des_endereco")) {
$sql->bindParam(":des_endereco", "'%".$vaga->get("des_endereco")."%'", PDO::PARAM_STR);
}
if ($vaga->get("des_cidade")) {
$sql->bindParam(":des_cidade", "'%".$vaga->get("des_cidade")."%'" , PDO::PARAM_STR);
}
if ($vaga->get("des_bairro")) {
$sql->bindParam(":des_bairro", "'%".$vaga->get("des_bairro")."%'", PDO::PARAM_STR);
}
if ($vaga->get("sig_uf")) {
$sql->bindParam(":sig_uf", $vaga->get("sig_uf"), PDO::PARAM_STR);
}
if ($vaga->get("opt_perfil")) {
$sql->bindParam(":opt_perfil", implode(',', $vaga->get("opt_perfil")), PDO::PARAM_STR);
}
$rs = $sql->fetchALL(PDO::FETCH_CLASS, "VagaModel");
$conn = null;
return $rs;
} catch(PDOException $e) {
$conn = null;
echo $e->getMessage();
}
}
Tentei também utilizando o PREPARE e EXECUTE, mas também não deu...Carregando comentários...