我正在使用CodeMirror编写代码编辑器。我将在mySQL数据库中保存Javascripts。因为Javascript使用了'
符号,所以我不得不在textarea上使用mysqli->real_escape_string()
输入
当我从脚本表中检索源时,它仍然具有转义字符。
所以,如果我要插入这个:
this.update('something');
你会有
this.update(\'something\');
有没有办法扭转这个过程?
答案 0 :(得分:1)
你使用mysqli准备好的陈述吗?
如果是这样,则不应使用mysqli->real_escape_string()
然后使用
如果没有 - 那么你有magic_quotes_gpc
,你必须将其关闭
答案 1 :(得分:0)
您可以随时尝试使用stripslashes()。
虽然你的real_escape_string不能正常工作但很奇怪。它不应该留下斜线。可能是您的主机已启用magic_quotes_runtime。您可以使用set_magic_quotes_runtime(0)
将其关闭。
也许你使用mysql_real_escape_string
和addslashes
双重逃避?
最佳做法是更改代码以使用绑定变量,而不是使用字符串转义。
示例:
$query = $mysqli->prepare( "UPDATE tablename SET favorite_color = ?, age = ?, description = ? WHERE user = ?" );
// we would have a bind looking like this:
$query->bind_param( 'sibs', 'red', 27, $some_blob, $variable );
$query->execute();
可以找到关于此(和SQL注入)的合适解释here。