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


Moderador: web

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

Consulta com duas palavras usando o LIKE MySQL

22-05-2011 20:48

Para usar o LIKE com duas palavras ou mais buscando em colunas diferentes devemos fazer assim:

SELECT * FROM tabela WHERE essacoluna LIKE 'valor%' AND essaoutracoluna LIKE 'esseoutrovalor%'

Logicamente valor e esseoutrovalor irá vir do GET ou POST de acordo com seu sistema.

Mas quando fazemos uma consulta MySQL usando o LIKE, pode ocorrer o problema de que quando procuramos uma única palavra em uma frase, dependendo da posição da palavra na frase a consulta não é realizada corretamente.

Para solucionar o problema, achei uma forma usando o REGEXP, explode e implode.

Funciona da seguinte forma

Quando a pessoa digitar um valor, ele pode vir com espaço ou não, então, o valor é explodido pelo espaço, e em seguida é implodido pelo |

O | é necessário para o uso do REGEXP, ele simboliza o OR "ou", ou seja, vai busca entre os valores separados pelo |

Segue o exemplo

$valor = "nome aqui"; // poderia via por GET ou POST
$exp = explode(" ", $valor); // separando pelo espaço
$imp = implode("|", $exp); // unindo os valores pelo |

$query=mysql_query("SELECT colunas FROM minhatabela WHERE essacoluna REGEXP '($imp)'"); 

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

Consulta com duas palavras usando o LIKE MySQL

22-05-2011 22:52

O exemplo acima procura nas linhas do banco de dados registros que possuam uma ou outra palavra buscada.

Se você precisa buscar registros que contenham exatamente as duas linhas buscadas, deve usar o seguinte:

// Use essa linha para o implode $p2 = implode("%", $p1); 

E ao invés do REGEXP iremos usar o LIKE, da seguinte forma:

.. WHERE essacoluna LIKE '%$p2%'
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Mensagens: 1
Sexo: Masculino

Consulta com duas palavras usando o LIKE MySQL

01-11-2012 22:16

E como funciona se eu quizer usar mais de duas palavras?
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17737
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Consulta com duas palavras usando o LIKE MySQL

02-11-2012 09:02

O número de palavras usada é relativo, ou seja, você pode usar quantas palavras desejar, separando elas por espaço. O script se encarrega de juntar para usar na consulta.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

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