PHP - consulta a bbdd mysql con LIKE %search%

 
Vista:

consulta a bbdd mysql con LIKE %search%

Publicado por giulia (2 intervenciones) el 22/10/2019 17:09:45
Hola a todos!!!!
Estoy teniendo un pequeño problema con una consulta a la base de dato con mySql, espero que alguien aqui pueda ayudarme ;D

Lo que necesito hacer es muy sencillo: un buscador en php que me permita encontrar, a través de un formulario post con un solo input text, nombres de grupos musicales dentro de la base de datos.

SIN EMBARGO, ESTOY TENIENDO UN PROBLEMA QUE CREO SEA DE SINTÁXIS

El objetivo del buscador es que la consulta a la base de datos no sea sensible a mayúsculas y minúsculas. Así que si un usuario tuviese que buscar , por ejemplo, el grupo "biznaga" asi: BIZNAGA, la búsqueda no debería devolver un conjunto de carácteres vacío. Y para que esto sea posible, me dijeron el otro día, es necesario agregar el simbolo %% antes y después de la variable.POST que contiene el nombre del grupo (o en otras palabras, el valor del input text...)

Sin embargo, aunque yo ponga este simbolo, si no escribo el nombre con mayúsculas y minusculas exactamente como esté escrito en la base de datos, no me devuelve ningun resultado

EJEMPLO:

en la base de datos el grupo biznaga está con primera letra en mayúscula: Biznaga.

si la consulta la hago así: "SELECT * FROM mytable WHERE Nombre LIKE '%BIznaga%'", ningún problema: me delvuelve el grupo con todos sus datos.

Sin embargo, si la consulta la hago así: "SELECT * FROM mytable WHERE Nombre LIKE '%bIznaga%'", (con b minúscula), no me devuelve nada.

DONDE ME ESTOY EQUIVOCANDO?????????? :D

help pleaseeeee :)))) muchísimas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
2
Responder
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

consulta a bbdd mysql con LIKE %search%

Publicado por Kathyu (905 intervenciones) el 22/10/2019 19:21:32
No recuerdo donde se configura eso de case sensitive, es mas no recuerdo que MySQL en si sea case sensitive con la clausula LIKE

Pero si a usted no le es mucha molestia podría pasar todo su contenido a un solo tipo de letra, mayus o minus y hacer todo en base a eso.

Yo por ejemplo convierto todos mis textos a mayúsculas, y en las vistas todo lo paso a mayus con onKeyUp o similares, osea todo lo que yo escribo se convierte a mayus en las vistas y se inserta así en la DB y es obvio que cuando hago una búsqueda convierto en mayus el texto a buscar y cero problemas.

También puede intentar algo de esto

how do you force mysql like case insensitive
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

consulta a bbdd mysql con LIKE %search%

Publicado por Giulia (2 intervenciones) el 22/10/2019 21:45:51
MUCHAS GRACIAS POR LA RESPUESTA! :D Que guay...

ya, entiendo que lo ideal sería poner todo en minúsculas en la bbdd, sin embargo, los usuarios no siempre buscan todo en minúscula: a veces hacen cosas raras y me gustaría que mi web esté preparada para cualquier eventualidad jajajaj!

en final lo solucioné así:

SELECT * FROM mytable WHERE UPPER(Nombre) = UPPER(string). Me pone todo en mayúsculas y ya está....

Si no os importa, tendría otra duda :D

Si por ejemplo quiero encontrar todos los nombres que tengan por ejemplo el string "PAR", como sería la consulta?
Gracias!
G
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

consulta a bbdd mysql con LIKE %search%

Publicado por Kathyu (905 intervenciones) el 22/10/2019 23:30:28
1
2
3
4
5
ya, entiendo que lo ideal sería poner todo en minúsculas en la bbdd, sin embargo, los usuarios no siempre buscan todo en minúscula: a veces hacen cosas raras y me gustaría que mi web esté preparada para cualquier eventualidad jajajaj!
 
en final lo solucioné así:
 
SELECT * FROM mytable WHERE UPPER(Nombre) = UPPER(string). Me pone todo en mayúsculas y ya está....

Por eso debe ser mas inteligente que el usuario, cuando usted ponga un campo para buscar desde sus vistas formatee el texto para que en la query ya llegue en mayus o minus según usted elija.

Vuelvo a mi ejemplo, antes de meter o sacar todo de mi DB, yo lo paso a uppercase (mayus) con PHP y eso evita hacer querys como la que usted hace, que llevan mas tiempo y son mas difíciles y lentas de mantener.

Si pasa todo a minúscula y luego quiere primer letra mayus, pues php ya tiene funciones para eso, se lo menciono por si de verdad esta pensando en ello

1
2
3
4
Si no os importa, tendría otra duda :D
 
Si por ejemplo quiero encontrar todos los nombres que tengan por ejemplo el string "PAR", como sería la consulta?
Gracias!

1
SELECT * FROM mytable WHERE nombre LIKE '%suCadena%'

https://www.w3schools.com/sql/sql_like.asp
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

consulta a bbdd mysql con LIKE %search%

Publicado por Javier (2 intervenciones) el 20/10/2022 23:35:04
Encontré una posible solución en un foro inglés, pero no lo consigo hacer funcionar:

1
WHERE titulo COLLATE SQL_Latin1_General_Cp1_CI_AI LIKE '%Keyword%'

No se si lo estoy poniendo mal o que pase, pero no me va y me tira error:

https://imagesearchreverse.com/search/

A ver si alguien tiene una solución, convertir todas a mayúsculas al insertar no creo que sea lo mejor... Por temas de nombres propios y tal.

Alguna solución o idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

consulta a bbdd mysql con LIKE %search%

Publicado por Javier (2 intervenciones) el 20/10/2022 23:56:45
Actualizo:

1
ALTER TABLE tabla MODIFY COLUMN columna VARCHAR(50) CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI

Ejecutando esta consulta solucionamos el problemilla xdd... Aconsejo hacer respaldo de la base de datos por nos cargamos algo.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar