Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17738
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Sistema de busca procurando uma ou ambas palavras LIKE MySQL

02-09-2016 15:34

Nesse post vou mostrar a solução para um erro muito comum quando usamos o LIKE para fazer uma busca no banco de dados.

Vamos imaginar a seguinte situação:

id - nome
------------
1 - Maria
2 - Paula


Agora, vamos imaginar que o usuário procure o seguinte:

Maria Paula

SELECT * FROM banco_de_dados WHERE nome LIKE '%$buscado%'

O desejado nesse caso é que retornasse ambas as linhas do banco de dados, pois o valor buscado tem conteúdo de ambas as linhas.

O que acontece é que nenhuma das linhas será mostrada, fazendo com que o sistema de busca não retorne resultado.

Para ter resultado é necessário usar a cláusula IN na query da seguinte forma:

// valor buscado $buscado = "Maria Paula"; // separando os valores pela busca $separa = explode(" ", $buscado); // array base $valores = Array(); // junção dos valores para o IN foreach($separa AS $sepa) { $valores[] = "'".$sepa."'"; } // valor usado na query $junta = implode(",", $valores); SELECT * FROM banco_de_dados WHERE nome IN ($junta)

1
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado