好吧,在我的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数据库字段中实际打印斜杠?
答案 0 :(得分:4)
没有。一旦它们进入数据表,逃逸就会消失。这就是逃避数据的全部要点 - 就像把信件塞进信封里一样。这封信在通过邮政系统的途中留在信封里(逃脱)。一旦到达目的地(数据库存储介质),它就会从信封中删除并以原始形式存储。
如果转义(信封)与信件一起存储,则每次将信件从数据库中取出时,您必须使用UNESCAPE(打开信封)。
对于数据库,转义用于从查询解析器中“隐藏”SQL元字符。一旦数据通过解析器并写入数据库,就不再需要转义。 db自己的内部处理程序知道什么是数据以及什么是sql命令,因此在那时不再需要由转义创建的人为分割。
答案 1 :(得分:2)
必须存在某些字符才能理解该语句。
例如,在PHP中,当你有,$ var =“有一天,有人说,”你好!\“”;你不希望\输出字符串中存在\。在SQL中转义是相同的概念。转义字符用于将特殊字符标记为文字,而不是实际显示。