Jump to content
jganjos

Busca php sem acentuação não encontra o valor correto

Recommended Posts

Bom dia pessoal.

 

Tenho um banco de dados com uma coluna CDS e CAT onde CDS é o cadastro do cliente e CAT a categoria.

ID   |   CDS | CAT

01  |   01    | Excel Intermediário

02  |   01    | Excel Básico

03  |   01    | Word Intermediário

04  |   01    | Word Básico

 

Estou trabalhando com url amigáveis e preciso retornar a categoria.

No entanto, quando a url está meusite.com.br/excel-basico, o PHP retorna Excel Intermediário e não o Excel Básico.

 

O script de busca é o seguinte:

 

// BUSCA NAS CATEGORIAS

$sub pega a categoria na url no caso (excel-basico)
$src = "select * from post_categoria where cds like '$cds' and cat like _utf8 '%$sub%' COLLATE utf8_unicode_ci";
$sql = mysql_query($src);
$num = mysql_num_rows($sql);
$dat = mysql_fetch_array($sql);

 

Tentei realizando a busca entre chaves '%{$sub}%' e obtive a mesma falha na busca.

A busca está funcionando sem erros, a não ser pelo fato do PHP retornar o primeiro valor que encontra como Excel, ignorando as outras variáveis da pesquisa.

Como consigo fazer para retornar o valor correto?

 

Share this post


Link to post
Share on other sites

Consegui resolver o problema.

Bastava retirar o símbolo de percentual % e adicionar as chaves.

O código ficou assim: " select * from post_categoria where cds like '$cds' and cat like _utf8 '{$sub}' COLLATE utf8_unicode_ci "

Share this post


Link to post
Share on other sites

Nos próximos projetos, utilize a definição do SGBD diretamente como utf8_general_ci, inclusive a conexão.

 

Vai evitar ter que fazer as alterações do collation nas queries.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.