Inilah aturan umum.
Anda ingin variabel Anda menjadi representasi data yang bersih. Artinya, jika Anda mencoba menyimpan nama belakang seseorang bernama "O'Brien", maka Anda pasti tidak mau ini:
O'Brien
O\'Brien
.. karena, yah, itu bukan namanya:tidak ada ampersand atau garis miring di dalamnya. Saat Anda mengambil variabel itu dan mengeluarkannya dalam konteks tertentu (misalnya:menyisipkan ke kueri SQL, atau mencetak ke halaman HTML), itu adalah saat Anda memodifikasinya.
$name = "O'Brien";
$sql = "SELECT * FROM people "
. "WHERE lastname = '" . mysql_real_escape_string($name) . "'";
$html = "<div>Last Name: " . htmlentities($name, ENT_QUOTES) . "</div>";
Anda tidak pernah ingin memiliki htmlentities
string -encoded disimpan dalam database Anda. Apa yang terjadi jika Anda ingin membuat CSV atau PDF, atau apa pun yang bukan HTML?
Jaga agar data tetap bersih, dan hanya keluar untuk konteks tertentu saat itu.