Cada vez que uso php/mysql/jquery para pasar datos de un lado a otro, termino usando la siguiente combinación de codificaciones/escapes, y parece funcionar bien para mí.
1) no necesita hacer nada aquí, A MENOS que esté enviando una URL (creo que esto es solo para solicitudes GET), pero si está enviando una URL, debe usar encodeURIComponent (url), que escapará correctamente los &y los caracteres especiales en la URL (vea más aquí ).
2) Use mysqli y parámetros enlazados, hará todo el escape por usted (lea sobre esto aquí )
3) Siempre uso esto cuando hago eco de datos en un archivo HTML:
<?php
htmlspecialchars($string_to_escape, ENT_QUOTES, 'UTF-8', false);
?>
Esto codificará correctamente todos los caracteres especiales (el falso es para "sin doble codificación"). También asegúrese de colocar las metaetiquetas UTF-8 adecuadas en la parte superior de sus páginas html.
4) El uso de json_encode siempre debe escapar de sus datos correctamente, pero usaría el código del n. ° 3 solo para asegurarme. Pero probablemente solo lo necesite si está devolviendo datos con caracteres especiales.