Nie powinieneś używać htmlentities podczas zapisywania. Powinieneś użyć htmlentities podczas wyświetlania. Zasadą jest, aby nie kodować/czyścić danych, dopóki nie zajdzie taka potrzeba. Jeśli wykonasz htmlentities na nim, gdy zapisujesz, musisz zrobić html_entity_decode na tekście, gdy użytkownik chce edytować dane wejściowe. Więc odkażasz to, czego potrzebujesz i nic więcej. Zapisując go, musisz oczyścić przed wstrzyknięciem SQL, więc mysql_real_escape_string to. Podczas wyświetlania musisz oczyścić je pod kątem XSS, więc htmlentities to.
Nie jestem też pewien, czy widziałeś komentarz Darryla Heina, ale naprawdę nie chcesz, aby funkcja magic_quotes była włączona. Są złe, złe i zostały przestarzałe w PHP 5.3 i znikną całkowicie w PHP 6.