Обычно символы экранируют при помощи функции mqsql_escape_string() перед занисением в базу данных MySQL, а функцию htmlspecialchars() применяют непосредственно перед выводм из базы данных. Иначе получается неудобно, особенно, если сообщение отредактировать нужно.