【发布时间】:2013-10-09 04:25:42
【问题描述】:
情况如下:
我的程序接受用户在表单中输入的输入,并使用 PHP 的 PDO 和 Prepared Statements 将其保存在 MYSQL 数据库中。
数据通过 AJAX 调用检索并使用 json_encode 编码为 JSON,如下所示:
echo "<script> var jsonData = '". json_encode($profileData) . "';</script>";
然后用JQuery解析:
var Profile = jQuery.parseJSON(jsonData);
这很好用,直到用户输入 ' 字符。
即如果用户输入单词
我是
它将像这样被转义并存储在数据库中:I\'m
从数据库中检索后,JSON 编码的字符串将如下所示:
<script> var jsonData = '{"fname":"Daniel","about":"i\\'m a nerd"}';</script>
虽然' 被转义了,但似乎破坏了JSON。
我看到有人发布查找/替换样式的变通办法,但我宁愿避免这种方法。
肯定有一些方法可以处理这个问题,还是我以某种方式错误地初始化了 JSON 对象?
非常感谢任何帮助,如果需要更多信息,请询问:)
【问题讨论】:
-
这里的语法高亮显示它,你已经过度转义了
'。 -
当使用 PDO 准备好的语句时,您不应该在数据库中手动转义
',PDO 会为您正确处理存储/检索它。I'm应存储为I'm,而不是I\'m。 -
@JoachimIsaksson 我没有进行任何手动转义。准备好的语句将
'存储在数据库中为\' -
@JoachimIsaksson ..但你是对的,额外的反斜杠必须去掉 :)
-
该死的魔法语录! XD 使用共享主机必须让他们将其关闭..
标签: php jquery mysql json prepared-statement