我有一個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