tony_lu 1 Denunciar post Postado Maio 27, 2016 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
Gabriel Heming 766 Denunciar post Postado Maio 27, 2016 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