mysql_real_escape_string()
的等效javascript代码是什么?
答案 0 :(得分:4)
基于该方法的PHP documentation,这将大致相同。不推荐使用PHP中的mysql_real_escape_string方法。
function mysqlEscape(stringToEscape){
return stringToEscape
.replace("\\", "\\\\")
.replace("\'", "\\\'")
.replace("\"", "\\\"")
.replace("\n", "\\\n")
.replace("\r", "\\\r")
.replace("\x00", "\\\x00")
.replace("\x1a", "\\\x1a");
}
不幸的是,根据5.6 mysql API docs,这并不是mysql_real_escape_string所做的。它没有考虑其他因素的字符编码。
即使您只使用前两次替换,上述方法也可能会执行您正在寻找的内容。
function mysqlEscape(stringToEscape){
return stringToEscape
.replace("\\", "\\\\")
.replace("\'", "\\\'");
}
根据mysql文档。
MySQL只需要反斜杠,并且用于引用查询中字符串的引号字符将被转义。 mysql_real_escape_string()引用其他字符以使它们更容易在日志文件中读取
答案 1 :(得分:2)
当你正在寻找流行的PHP函数的javascript等效版本时,一个很好的提示是
但是你可能正在寻找错误的功能。 mysql_real_escape_string()只能在mysql数据库连接处于活动状态时使用(更多详细信息可以在mysqli real_escape page上读取。即mysql_real_escape_string()实际上不是PHP实现,而是更多MySQL。如果没有数据库使用连接只会给你一个空变量。
您可能已经找到了添加斜线并删除换行符的函数?你可以查看phpjs.org他们如何实现add_slashes函数。我想,可以使用自定义替换功能删除换行符。
也许在什么环境下解释一下你需要这个函数在javascript中运行,所以我们可以推动你朝着正确的方向前进(也就是说你在javascript中使用mysql_real_escape_string,但提供你真正需要的函数的提示)< / p>
答案 2 :(得分:1)
我有一个用例,我需要转义自己的数据(而不是用户输入)才能在node.js脚本中使用它。我修复了@majinnaibu回答中的代码,因为它只是逃避了第一次出现的特殊符号。
function mysqlEscape(stringToEscape){
if(stringToEscape == '') {
return stringToEscape;
}
return stringToEscape
.replace(/\\/g, "\\\\")
.replace(/\'/g, "\\\'")
.replace(/\"/g, "\\\"")
.replace(/\n/g, "\\\n")
.replace(/\r/g, "\\\r")
.replace(/\x00/g, "\\\x00")
.replace(/\x1a/g, "\\\x1a");
}
希望这有助于其他人。
答案 3 :(得分:0)
没有,因为来自JavaScript的字符串仍被视为“用户输入”,不应直接插入数据库。您的服务器端必须进行其他验证。有编码URL的功能和类似的东西。
你想做什么?
答案 4 :(得分:-1)
我认为我们可以使用escape()方法