使用javascript将变量插入到SQLite中

问题描述 投票:1回答:2

我正在开发Firefox的扩展,我已经创建了SQLite DB。在表中插入值时,我收到一条错误消息:

错误:http://en.wikipedia.org在<>上调用方法UnnamedClass.toString的权限被拒绝。

要插入的字符串值存储在变量中。

var book = "Harry Potter";
var myInsertQuery = 'INSERT INTO mybooks_tbl(title) VALUES('+ book + ');';

我们如何将数据作为变量而不是字符串插入表中?

javascript firefox sqlite firefox-addon
2个回答
3
投票

SQLite遵循string literals的ANSI标准:

通过将字符串括在单引号(')中形成字符串常量。字符串中的单引号可以通过在行中放入两个单引号来编码

所以:

function sqlstr(s) {
    return "'"+s.replace(/'/g, "''")+"'";
}

var query= 'INSERT INTO books(title) VALUES('+sqlstr(book)+');';

您必须记住要逃避所有这样的字符串文字,否则您将创建一个客户端SQL注入漏洞。


1
投票

字符串中只有错误var query ='INSERT INTO books(title)VALUES('+ sqlstr(book)+');';

tx.executeSql('INSERT INTO CLASS_LIST(“class_title”,“”)VALUES(“+ v.classTitle +”)');

© www.soinside.com 2019 - 2024. All rights reserved.