我有一个JavaScript丰富的页面,传递一个大的JSON格式化为PHP将放入MySQL数据库。 JSON中的数据包括用户提交的字符串,并将包含包含基本html的字符串(<a>
,<strong>
等)。如何在MySQL中对数据库存储的json数据进行编码?
我遇到的问题是,当含有'
引号的字符串被转义,我不能剥夺斜线,导致复合逃逸像
<a href=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'example.com\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'></a>
每当用户节省这加剧,严重腹胀数据库字段。
我的字符串转换将数据插入到MySQL是:
$correspondenceArray = base64_encode(json_encode($_POST['saveArray']['correspondenceObject']));
而要找回数据为:
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);
return $value;
}
$correspondenceJSON = stripslashes_deep(json_decode(base64_decode($resultArray['correspondence_array']), true));
从我已经做了我的意图是要剥离上的数据斜杠来自数据库,所以javascript有非转义数据
编辑
我意识到json_encode($a,JSON_HEX_QUOT)
将可能有所帮助,但我运行的服务器有PHP 5.2.16使功能不可用)
你有'magic_quotes_gpc()'打开了吗?那些垃圾会将你所有的数据全部删除,并且该选项应该被关闭。 – 2011-02-22 22:31:13
啊,没有打开。嗯,如果我把它关掉,我可能会在其他地方产生影响? – 2011-02-22 22:36:22
你可能想在你的查询中使用mysql_real_escape_string(),当你关闭它以避免恶意注入时,但是@Marc B是正确的,你应该关闭它(它在PHP 5.3中不赞成使用)。 – Capsule 2011-02-22 22:41:22