PHP - Comparar eñes y tildes en consulta SQL

   
Vista:

Comparar eñes y tildes en consulta SQL

Publicado por michelle (1 intervención) el 26/08/2015 20:21:25
Hola. Como se puede realizar una consulta SQL para que saque los tildes y reemplace las eñes con enes.

1
2
3
4
$nombreAnimal = $_POST["animal"];
 
select * from Zoo
where nombreAnimal= quitarCaracterEspecial($nombreAnimal)

Por ejemplo tengo una función que me quita las eñes y tildes del parámetro que recibo desde un formulario, pero si el campo nombre animal lo dejo de esta forma:

No reemplaza los caracteres especiales en el campo de la tabla ZOO que esta dentro de la función quitarCaracterEspecial

1
2
3
4
$nombreAnimal = $_POST["animal"];
 
select * from Zoo
where quitarCaracterEspecial(nombreAnimal)= quitarCaracterEspecial($nombreAnimal)

Por ejemplo si el animal buscado es ñandú, la consulta debería comparar nandu=nandu o si es león , debería ser leon=leon
una ayuda
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Lucas B.

Comparar eñes y tildes en consulta SQL

Publicado por Lucas B. (1 intervención) el 09/09/2015 00:45:57
Es totalmente innecesario hacer eso:
- Usa consultas preparadas.
- Establece UFT-8 (general).

Te dejo una guía que arme yo mismo (hace bastante la hice, por las dudas..) para empezar a usar consultas preparadas que son muy seguras, al usarlas no tienes que escapar ningún carácter (esto es nativo de php por así decirlo): https://amxmodx-es.com/Thread-GUIA-MySQLi-consultas-preparadas

Y ya está, no es necesario limpiar ningún dato. Obvio, si quieres mostrarlo en pantalla utiliza htmlentities y strip_tags para evitar xss.

Insisto, puedes almacenar cualquier carácter en la base de datos.
Yo antes también lo hacía, reemplazaba todos los caracteres "raros" por sus parecidos, está muy mal hacer eso!
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