Не трябва да използвате htmlentities когато го записвате. Трябва да използвате htmlentities при показването му. Основното правило е да не кодирате/дезинфекцирате данните, докато не се наложи. Ако правите htmlentities върху него, когато запазите, тогава трябва да направите html_entity_decode върху текста, когато потребителят иска да редактира въведеното. Така дезинфекцирате за това, от което имате нужда и нищо повече. Когато го запазвате, трябва да дезинфекцирате за SQL инжекция, така че mysql_real_escape_string то. Когато показвате, трябва да дезинфекцирате за XSS, така че htmlentities го.
Също така, не съм сигурен дали сте видели коментара на Дарил Хайн, но наистина не искате да активирате magic_quotes. Те са лошо, лошо нещо и са оттеглени от PHP 5.3 и ще изчезнат напълно в PHP 6.