假设我有一个列产品名称,它的值为Shoe's
。
当我从db中选择该值并使用mysql_real_escape_string
并将其放入html隐藏输入时,它变为<input type='hidden' value='Shoe\'s' id='product_name'>
当我执行$('#product_name').val()
时,它仅返回Shoe\
截断s
或之后的其余值。 jQuery假定转义单引号作为attr值的结束引用。
解决方案是使用value=""
(用双引号括起来)但是如果值包含双引号怎么办?所以问题仍然存在。
任何帮助表示赞赏。
谢谢!
答案 0 :(得分:4)
您不得将mysql_real_escape_string
用于HTML输出。请改用相应的htmlspecialchars
。
答案 1 :(得分:0)
在HTML中,引号前的反斜杠并不意味着报价被转义。 HTML中的转义'
为'
。这就是您为输出目标使用适当的转义方法的原因。转义SQL时mysql_real_escape_string
是合适的,转义为HTML时htmlspecialchars
是合适的。