我正在为我的移动应用程序使用phonegap。我需要动态生成查询然后执行查询;
qry += "('" + item1 + "','" + id + "','" + item2 + "','" + item3 + "'),";
item1,item2,item3应该是字符串,以便在执行时成功执行查询。
在大多数情况下,上述位对于我的用例是好的。但是我现在遇到了意想不到的错误。
如果item1的值为1'Feet
或10 ' Feet
代码中断且执行失败。
我怎样才能克服这个?
答案 0 :(得分:1)
这是展示模板标签的ES2015解决方案:
function esc(pieces, ...subs) {
var result = pieces[0];
for (var i = 0; i < subs.length; ++i) {
// uses `.escape`, use other escaping function if you want.
// for example with `/`
result += escape(subs[i]) + pieces[i + 1];
}
return result;
}
模板标签为我们提供了新的ES2015标准模板的自定义逻辑,对此非常有用。
var hello = "9'c"
console.log(esc`(${hello})`); // (9%27c)
function esc(pieces) {
var result = pieces[0];
var subs = [].slice.call(arguments, 1);
for (var i = 0; i < subs.length; ++i) {
result += escape(subs[i]) + pieces[i + 1];
}
return result;
}
var hello = "9'c";
document.body.innerHTML = esc`(${hello})`;
&#13;
答案 1 :(得分:0)
最后找到答案,我们需要在Sql中而不是在jquery中使用转义字符串,替换双引号而不是单引号可以解决问题。
item1.replace(/'/g, "''") ;
答案 2 :(得分:-2)
[编辑上一个回答]
试试这个,
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
function fnEscapeQuotes(){
var item1= "Ford's";
var item2= "Dodges's";
var item3= "Benz's";
var id=100;
var qry = "('" + item1 + "','" + id + "','" + item2 + "','" + item3 + "'),";
alert(JSON.stringify(qry).slice(1, -1));
}
</script>
</head>
<body onload="fnEscapeQuotes();">
</body>
</html>
&#13;