Stack Overflow em Português Asked by Felipe Mascarenhas on January 2, 2022
Faço minha consulta no banco com a seguinte função e não está retornando nada.
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;
}
Ao dar o print_r(), retorna a seguinte mensagem
Ao executar essa query diretamente no banco substituindo pelo valores, executa normalmente sem nenhum erro.
O problema está nas aspas duplas simples ao mesmo tempo, conforme o código abaixo.
if(!empty($nome_paciente)){
$filtrostring[] = 'nome LIKE :nome_paciente"';
}
O correto para funcionar é colocar apenas aspas duplas assim, "nome LIKE :nome_paciente". Depois de ajustado funcionou perfeitamente.
Answered by Felipe Mascarenhas on January 2, 2022
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP