Я делаю так:
Для varchar полей (обычно они у меня отдаются для имен,, заголовком и т.п, их не нужно обрабатывать ббкодами, смайлами, и пробелы не нужны) их я обрабатываю htmlentitlies(); и прямиков пихаю в БД. То есть символы сохраняются в виде кода (#0123;), а поля text (ну естественно они для сообщений) их только через mysql_escape_string(); в БД пихаю.