Stopp! HTMLEntities sind HTML-Elemente.
Das hat im Groben erstmal nichts mit mysql_escape zu tun.
Das eine (mysqll_escape) dient zur Präventation von SQL-Injection.
Ein Beispiel dafür:
Du nimmst eine ID via GET-Parameter entgegen. Nun kann ich,
wenn du die ID ohne mysql_escape in das WHERE schmeißt SQL dazu packen.
Beispiel (statt id=1 dann id=1 OR name!='') so nun kriege ich nicht ide Benutzer mit der ID,
sondern mit der ID oder wo der Name nicht leer ist ... Denke das brauch man nicht
weiterführen und es ist klar, das sowas ssehr gefährlich ist, besonders
wenn Fehlermeldungen auf der Seite angezeigt werden (Connection fails, ..)
HTMLEntities wiederum escaped JavaScript-Tags und unerlaubte HTML-Elemente.
Das ist gefährlich, wenn ich in ein Gästebuch JavaScript einbinde, beispiel:
<script>window.location.href="böse seiite.de";</script>
Wenn der Eintrag so in die Datenbank kommt, werden alle Benutzer nun auf eine Seite
kommen, worauf meine Umleitung per JavaScript referenziert..Gaanz böse!

So werden auch Portscans auf Webseiten untergebracht usw.
Sehr wichtig und das eine ersetzt niemals das andere.
In PHP5 übernehmen die filter_input Funktionen glaube den Aufruf beider Funktionen.
Wie bereits gesagt gibt mysql_escpae einen String zurück,
der gespeichert und verwendet werden muss

Wenn du PHP>5.2 bist solltest du nicht mehr $_POST verwenden!
lg, Tim