No tienes problemas con el escapado de cadenas, tienes problemas de CODIFICACIÓN, revisa el meta de tus paginas:
Código:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
y la codificación de tu base de datos, debe ser la misma, de lo contrario tienes que codificar / decodificar al leer/grabar en tu base de datos.
utf8_encode: de iso a utf8
utf8_decoce: de utf8 a iso
htmlentities: solo convierte los caracteres especiales a sus entidades xml: á por ejemplo es á
te recomiendo que en tu base y tus paginas uses utf-8.
si utilizas mysql, te puede servir al grabar este comando sql: SET NAMES 'utf8'; antes de cada insert o update; si tienes una conexion persistente (no recomendado) debes llamar: SET NAMES 'latin1'; al leer
Escapar una cadena evita las inyecciones SQL