När jag använder php/mysql/jquery för att skicka data fram och tillbaka, slutar jag med att använda följande kombination av kodningar/escapes, och det verkar fungera bra för mig.
1) du behöver inte göra någonting här, OM du inte skickar en URL (jag tror att detta bara är för GET-förfrågningar) - men om du skickar en url måste du använda encodeURIComponent(url), som kommer att escape ordentligt &och specialtecken i webbadressen (se mer här ).
2) Använd mysqli och bundna parametrar, det kommer att göra allt för dig (läs om det här a> )
3) Jag använder alltid detta när jag ekar data till en HTML-fil :
<?php
htmlspecialchars($string_to_escape, ENT_QUOTES, 'UTF-8', false);
?>
Detta kommer att koda alla specialtecken korrekt (falskt är för "ingen dubbelkodning"). Se också till att du har rätt UTF-8-metataggar överst på dina HTML-sidor.
4) Att använda json_encode bör alltid undvika dina data ordentligt, men jag skulle använda koden från #3 bara för att vara säker. Men du kommer förmodligen bara att behöva det om du returnerar data med specialtecken.