首页 > 解决方案 > SQL 语法错误 [node-red 中的函数]

问题描述

我正在尝试通过 node-red 将数据发布到数据库中,但出现此错误。

“错误:ER_PARSE_ERROR:您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“插入自定义(custom_id、product_id、paper_id、ribbon_id、custom_qt)附近使用正确的语法”

这是我使用的功能。

var items    = msg.payload.items;
var sql = "";
var template = "insert into customizations(custom_id, product_id, paper_id, ribbon_id, custom_qty, message)";
template    += " values(null,'c1','c2','c3','c4','c5')";

for(var i=0;i<items.length;i++){
var cp = template;
cp = cp.replace('c1',items[i].autoId);
cp = cp.replace('c2',items[i].paper_id);
cp = cp.replace('c3',items[i].ribbon_id);
cp = cp.replace('c2',items[i].qty);
cp = cp.replace('c3',items[i].message);
sql += cp;
}


msg.topic = sql;
return msg;

标签: mysqlsqlnode-redmsg

解决方案


值后通常有一个空格,但这可能无关紧要。您替换 c2 和 c3 两次。使用绑定变量而不是文本插值。如果消息等任何字段包含引号,它会为您转义:

connection.query('insert into customizations(product_id, paper_id, ribbon_id, custom_qty, message) values (?, ?, ?, ?, ?)', [items[i].autoId, items[i].paper_id, items[i].ribbon_id, items[i].qty, items[i].message], ...)

推荐阅读