Escape only for the circumstance you are in.
In otherwords - escape the input for SQL injection before entering into the database - so use MySQL_Real_Escape_String or PDO prepared statments etc.
When it comes to outputting HTML, escape for HTML.
If you escape for HTML when putting it into the database, you'll need to unescape it for non-html output, e.g. when editing it inside a textarea, or serving it as a txt file etc.
Keep prepared for circumstances where you won't be definitely outputting content as HTML.