Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tony_lu

Problemas com prepare statement na busca

Recommended Posts

Ola pessoal, estou criando um sistema de busca de produtos para o site, fiz um buscador que funciona, porem eu gostaria de usar o prepare statement, e não estou conseguindo, a busca que funciona esta assim:

public function Buscar_Produtos($busca)
{
$sql = "SELECT * FROM produtos WHERE titulo LIKE '%$busca%' order by titulo";
$stmt = $this->db->query($sql); 
$stmt->execute();
$lista = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $lista; 
}
E com prepare statement fiz assim mas não retorna resultado:
public function Buscar_Produtos($busca)
{
$sql = "SELECT * FROM produtos WHERE titulo LIKE '%:busca%' order by titulo";
$stmt = $this->db->prepare($sql);
$stmt->bindValue(':busca',$busca, PDO::PARAM_STR); 
$stmt->execute();
$lista = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $lista; 
}

Alguem pode me ajudar a encontrar o problema?

 

Obrigado

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://php.net/manual/en/pdostatement.bindparam.php#99698

 

É uma particularidade, deve remover os apóstrofos e percentual. O percentual deve ser adicionado a variável em questão:

$sql = "SELECT * FROM produtos WHERE titulo LIKE :busca order by titulo";
$stmt = $this->db->prepare($sql);
$stmt->bindValue(':busca','%'.$busca.'%', PDO::PARAM_STR); 
Em prepared statements você nunca deve utilizar apóstrofos, o SGBD entenderá o tipo pela tipagem do parâmetro no bind.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.