【发布时间】:2014-07-02 18:24:11
【问题描述】:
在 mysql 表中存储 json 字符串有一个小问题。 字符串例如:
'{"variable":"content here with \" addsleshes "}'
使用 json_encode 创建。 使用简单的 mysqli_query 函数将此字符串存储在数据库中。
mysqli_query('insert into ... values \'{"variable":"content here with \" addsleshes "}\' ');
之后:
mysqli_query('select *..');
mysqli_fetch_array($res);
当我从 Mysql 获取此字段并尝试使用 php json_decode 时,它将返回 NULL,因为我不再有 " 之前的斜杠。不能使用 addlashes 函数,因为它也会添加斜杠,如 \"variable\"。 不知道如何解决这个问题?
【问题讨论】:
-
您必须展示如何存储此字符串以及如何检索它。正确完成的系统不会从文本中删除这些斜线。
-
更新了问题。我现在使用简单的 mysqli_query 功能进行测试,以防我的数据库类正在改变某些东西,但仍然是同样的问题
-
嗯,是的,你没有正确地转义那个字符串。如果你有,json_encode 添加的反斜杠就会进入数据库。换句话说,您遇到了sql injection attack 漏洞,而这个字符串“损坏”就是它的症状。