我正在使用手机间隙制作苹果应用程序(使用sqlite数据库)。
除了我尝试插入网络链接时,我的所有插件都能正常工作。这个错误是因为网络链接中有“字符。
使用以下内容:
var content = 'hello, this is my <a href="www.google.com">link</a>'
tx.executeSql('UPDATE PAGES SET content="'+content+'" WHERE id="1"');
带来以下错误
error code 1
error: "near "http": syntax error"
如果我删除网站地址,我不会收到错误。我试过了: content = escape(content);
但这没效果。
答案 0 :(得分:11)
使用参数绑定。这是你正在做的事情的正确和最安全的方式。
tx.executeSql('UPDATE PAGES SET content=? WHERE id=1', [content]);
答案 1 :(得分:4)
要在SQLite中转义引号,您必须重复引号。
因此要插入a 7" screen
,您必须将a 7"" screen
放在INSERT语句中。
答案 2 :(得分:1)
问题是引号。它们会更改SQL请求的含义并导致错误。
我找不到任何有关正确逃避它们的信息。我读过你可以在它们之前添加\然后将ESCAPE(“\”)添加到SQL语句中,但这似乎不适用于PhoneGap的实现。
最后,我做了一个简单的替换,其中单引号或双引号被替换为"
,如下所示:
var thisNotes = $('textarea#notes').val().replace(/(["'])/g,'"');
我只需要在文本字段中显示引号 - 但我不需要它们作为HTML链接的一部分,所以我不确定该链接是否仍然有效。在显示链接之前,您可能需要撤消替换。
希望这有帮助。
答案 3 :(得分:0)
使用javascript替换可能会创建一个像这样的函数:
function CleanDbData( dirty ){
var clean = dirty.replace( "/"","''").replace("<script>","[script]");
return clean;
}
var mydata = CleanDbData( dirtydata );
这不是AS,你将不得不乱用正则表达式等,但你明白了[希望]