Javascript 正在插入转义字符的SQL查询
我有一个正在输入MySQL的查询。我添加了一个新组件。。像这样的Javascript 正在插入转义字符的SQL查询,javascript,mysql,Javascript,Mysql,我有一个正在输入MySQL的查询。我添加了一个新组件。。像这样的。 它适用于单个项目,但当我传入倍数时。。。它对单引号进行了一些奇怪的转义。 下面是传入的sql的样子(从下面的console.log): 以下是我如何构建VAL: sql += " and vals in (?)"; var newStr = filterText.myItems.split(",".join("','"); sqlParams.push(newStr); filterText.myItems由用户以逗号分隔的值
。
它适用于单个项目,但当我传入倍数时。。。它对单引号进行了一些奇怪的转义。
下面是传入的sql的样子(从下面的console.log):
以下是我如何构建VAL
:
sql += " and vals in (?)";
var newStr = filterText.myItems.split(",".join("','");
sqlParams.push(newStr);
filterText.myItems
由用户以逗号分隔的值输入。例如:“2.2.3,2.4.5
”
进入MySQL的查询如下所示:
exports.query = function(sql, params, resultHandler, errorHandler) {
function _handleError(err) {
errorHandler(config.mysql.errorMessage || err);
}
pool.getConnection(function(err, conn) {
if(err) {
_handleError(err);
return;
}
var query22 = conn.query(sql, params, function(err,results) {
if(err) {
_handleError(err);
} else {
resultHandler(results);
}
conn.release();
});
//this prints out the sql and values displayed above.
console.log("FINAL QUERY:"+util.inspect(query22));
}
}
sql = "select name, street, numbers from ?? where year=?",
sqlParams = [this.tableName, this.year]
不用说。。。这无法执行,因为我猜MySQL不知道\\\'
实际上是什么。
无论出于何种原因,查询都会添加前导和尾随单引号。这就是为什么我在数字之间添加了,'
有人知道这可能是什么原因,或者我如何在它执行之前删除它吗
谢谢 我又胡闹了一会儿,终于让它开始工作了。以下是方法。
sql已生成,并按如下方式传入参数:
exports.query = function(sql, params, resultHandler, errorHandler) {
function _handleError(err) {
errorHandler(config.mysql.errorMessage || err);
}
pool.getConnection(function(err, conn) {
if(err) {
_handleError(err);
return;
}
var query22 = conn.query(sql, params, function(err,results) {
if(err) {
_handleError(err);
} else {
resultHandler(results);
}
conn.release();
});
//this prints out the sql and values displayed above.
console.log("FINAL QUERY:"+util.inspect(query22));
}
}
sql = "select name, street, numbers from ?? where year=?",
sqlParams = [this.tableName, this.year]
我使用
子句中的动态添加到我的sql中。然而,当我将其作为主sql的一部分并在那里传递VAL时,它起了作用
sql = "select name, street, numbers from ?? where year=? and vals in (?)",
sqlParams = [this.tableName, this.year, filterText.myItems.split(',')]
sql现在看起来是这样的,并且工作得很好:
sql: 'select name, street, numbers from' +
"`HOMES` where " +
"year='2020' and vals in ('2.2.3','2.4.5')",
values: [ '2020', ['2.2.3','2.4.5'] ]
“来自家中”+
这里缺少一个+。它应该是来自“+HOMES+”的“++
@MarceloTheWizzardCoder”,我打错了。看起来那一行和下面的一行都有双引号。。。其中另一行有单引号。不太清楚为什么。