Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/04/2016, 13:15
barbel
 
Fecha de Ingreso: septiembre-2012
Ubicación: Pontevedra
Mensajes: 48
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Insertar en bbdd caracteres especiales como hacentos etc

El tema de la inserción de caracteres especiales en la bbdd tiene que ver con el chartset de la bbdd y el de la web.
Si tienes la web en UTF-8 y la base de datos en ISO lógicamente al insertarlo te va a meter algo raro.

Viendo tu código fuente además he de decirte, que algún desalmado podría hacerte putadas en la web con inyección SQL, ya que parece que metes los datos obtenidos de un formulario directamente sin pasarlos por ningún filtro. Eso quiere decir que si alguien en uno de tus campos hace un cierre de tu sentencia SQL (es decir añade de primer elemento un ") y después hace un CREATE table va a ejecutar un hermoso create table que me permitirá convertir tu web en su propio manda spam. Ten siempre cuidado con esas cosas.

Para lo de los acentos simplemente a cada variable hazle un htmlentities y listo es decir:

Código PHP:
$nombrehtmlentities$nombre); 
Esa función convierte los caracteres especiales en su correspondiente código html, así que cuando alguien escriba Ramón, htmlentities lo convertirá en Ramón. Así cuando recuperes los datos puedes imprimirlos directamente.

OJO! ten cuidado si haces eso con las búsquedas, porque si buscas Ramón y en la base de datos tienes Ramón no te lo va a encontrar, debes pasarle el htmlentities también a estas.

Espero haberte sido de ayuda.

Si no quieres molestarte la otra opción es hacer un utf8_encode($nombre) o utf8_decode($nombre) cuando recuperes los datos de la base de datos. Con eso también se imprimirá bien, pero la primera opción que te di también te ayuda a evitar la inyección SQL.

Un saludo!!