io di solito uso le rwaurlencode / decode che sono pure compatibili con le funzioni escape e unescape di js.

QUIndi quando invio dati li invio sempre codificati con la codifica url std per le query string.
Lato server decodifico la stringa, poi controllo la presenza delle magic quotes ( se ci sono uso stripslashes per pulire) quindi applico la mysql_real_escape_string che mi da maggiore sicurezza.

Pensaci