我有一个包含国际字符串的数组 当我将其保存在数据库中时,我松开了反斜杠?为什么呢?
$descr_arr = array("héééllo","world");
$js_encoded = json_encode($descr_arr);
print $js_encoded; // "[\"h\u00e9\u00e9\u00e9llo\",\"world\"]"
$sql_query = "UPDATE test_table SET description = '$js_encoded' WHERE id = 0";
$sql_res = mysql_query($sql_query);
// in the description field in the database I find:
// ["hu00e9u00e9u00e9llo","world"]
答案 0 :(得分:2)
您没有逃避数据库输入。永远逃避!
这是一种方式
$sql_query = "UPDATE test_table SET description = '".
mysql_real_escape_string($js_encoded).
"' WHERE id = 0";
更好的是,使用像PDO或ADODb这样的数据库包装器来处理转义。它看起来像这样:
$db->Execute("UPDATE test_table SET description =? where id=?",
array($js_encoded, $id));