PHP / MySQL:如何验证正确的转义数据?

时间:2012-03-18 06:22:45

标签: php mysql escaping quotes

好吧,在我的php页面上,我正以这种方式逃避:

$title = "Jack's Long 'Shoes'";
$title = mysql_real_escape_string($title);
$go = mysql_query("INSERT INTO titles (title) VALUES '$title'");

然后,当我通过phpmyadmin查看此数据时,数据会在转义之前显示,即Jack's Long 'Shoes'

我的印象是它看起来像: Jack\s Long \Shoes\

是否应该在mysql数据库字段中实际打印斜杠?

2 个答案:

答案 0 :(得分:4)

没有。一旦它们进入数据表,逃逸就会消失。这就是逃避数据的全部要点 - 就像把信件塞进信封里一样。这封信在通过邮政系统的途中留在信封里(逃脱)。一旦到达目的地(数据库存储介质),它就会从信封中删除并以原始形式存储。

如果转义(信封)与信件一起存储,则每次将信件从数据库中取出时,您必须使用UNESCAPE(打开信封)。

对于数据库,转义用于从查询解析器中“隐藏”SQL元字符。一旦数据通过解析器并写入数据库,就不再需要转义。 db自己的内部处理程序知道什么是数据以及什么是sql命令,因此在那时不再需要由转义创建的人为分割。

答案 1 :(得分:2)

必须存在某些字符才能理解该语句。

例如,在PHP中,当你有,$ var =“有一天,有人说,”你好!\“”;你不希望\输出字符串中存在\。在SQL中转义是相同的概念。转义字符用于将特殊字符标记为文字,而不是实际显示。