¿Y por qué no "escapas" los caracteres especiales?
Con addslashes() añades una \ delante de los caracteres especiales, así no te darían problemas. Luego para mostrar por pantalla, usas stripslashes() para quitar las \ y ya está.
Como siempre, revisa el manual de PHP (en el de rinconastur que te pasé, viene

)