Setiap kali saya menggunakan php/mysql/jquery untuk meneruskan data bolak-balik, saya akhirnya menggunakan kombinasi penyandian/pelarian berikut, dan tampaknya bekerja dengan baik untuk saya.
1) Anda tidak perlu melakukan apa pun di sini, KECUALI Anda mengirim URL (saya pikir ini hanya untuk permintaan GET) - tetapi jika Anda mengirim url, Anda perlu menggunakan encodeURIComponent(url), yang akan lolos dengan benar karakter &dan khusus di url (lihat lebih lanjut di sini ).
2) Gunakan mysqli dan parameter terikat, itu akan melakukan semua pelarian untuk Anda (baca tentang itu di sini )
3) Saya selalu menggunakan ini ketika menggemakan data ke dalam file HTML :
<?php
htmlspecialchars($string_to_escape, ENT_QUOTES, 'UTF-8', false);
?>
Ini akan dengan benar menyandikan semua karakter khusus (yang salah adalah untuk "tidak ada pengkodean ganda"). Pastikan juga Anda menggunakan tag meta UTF-8 yang tepat di bagian atas halaman html Anda.
4) Menggunakan json_encode harus selalu keluar dari data Anda dengan benar, tetapi saya akan menggunakan kode dari # 3 hanya untuk memastikan. Tapi Anda mungkin hanya membutuhkannya jika Anda mengembalikan data dengan karakter khusus di dalamnya.