这是一般的经验法则。
在 最后可能的时刻 转义变量。
您希望变量是数据的干净表示。也就是说,如果您要存储名为“ O’Brien”的人的姓氏,那么您绝对 不 希望这些:
O'BrienO'Brien
..因为,那不是他的名字:里面没有“&”号。当您使用该变量并将其输出到特定的上下文中时(例如:插入SQL查询或打印到HTML页面), 即
在您对其进行修改时。
$name = "O'Brien";$sql = "SELECt * FROM people " . "WHERe lastname = '" . mysql_real_escape_string($name) . "'";$html = "<div>Last Name: " . htmlentities($name, ENT_QUOTES) . "</div>";
您永远不需要
htmlentities在数据库中存储编码字符串。当你想生成CSV或PDF,或任何其会发生什么事 是不是 HTML?
保持数据整洁,仅在当前特定情况下转义。



