Você não precisa escapar do cifrão. O MySQL não trata esse caractere especialmente, e o PHP o reconhece apenas no código-fonte, não em valores de string (a menos que você chame
eval
na corda, mas isso é uma outra lata de minhocas). Você só precisaria escapar
%
e _
se você usou a entrada do usuário como argumento para LIKE
e você não queria que o usuário pudesse usar curingas. Isso pode surgir se você estiver processando um formulário de pesquisa. Você não precisa usá-lo ao armazenar no banco de dados. Você não precisa usar
htmlspecialchars
ao acessar o banco de dados. Isso só deve ser usado quando você estiver exibindo dados para o usuário em uma página HTML, para evitar a injeção de XSS.