Nemusíte unikat znaku dolaru. MySQL s tímto znakem nezachází speciálně a PHP jej rozpoznává pouze ve zdrojovém kódu, nikoli v hodnotách řetězců (pokud nezavoláte eval na provázku, ale to je úplně jiná plechovka červů).
Potřebovali byste pouze escapovat % a _ pokud jste jako argument pro LIKE použili uživatelský vstup a nechtěli jste, aby uživatel mohl používat zástupné znaky. To se může objevit, když zpracováváte vyhledávací formulář. Při ukládání do databáze jej nemusíte používat.
Nemusíte používat htmlspecialchars při přístupu do databáze. To by se mělo používat pouze tehdy, když uživateli zobrazujete data na stránce HTML, aby se zabránilo vkládání XSS.