Ilekroć używam php/mysql/jquery do przekazywania danych tam iz powrotem, używam następującej kombinacji kodowania/uciekania i wydaje się, że działa to dobrze dla mnie.
1) nie musisz tutaj nic robić, JEŚLI nie wysyłasz adresu URL (myślę, że to tylko dla żądań GET) - ale jeśli wysyłasz adres URL, musisz użyć encodeURIComponent(url), który będzie poprawnie escape &i znaki specjalne w adresie URL (więcej informacji znajdziesz tutaj ).
2) Użyj mysqli i parametrów związanych, zrobi to za Ciebie (przeczytaj o tym tutaj )
3) Zawsze używam tego, gdy wysyłam echo do pliku HTML :
<?php
htmlspecialchars($string_to_escape, ENT_QUOTES, 'UTF-8', false);
?>
Spowoduje to prawidłowe zakodowanie wszystkich znaków specjalnych (fałsz oznacza „brak podwójnego kodowania”). Upewnij się również, że masz odpowiednie metatagi UTF-8 u góry stron html.
4) Korzystanie z json_encode powinno zawsze poprawnie wymykać się z danych, ale użyłbym kodu z #3, aby się upewnić. Ale prawdopodobnie będziesz go potrzebować tylko wtedy, gdy zwracasz dane zawierające znaki specjalne.