mysql - 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;
解决方案
值后通常有一个空格,但这可能无关紧要。您替换 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], ...)
推荐阅读
- javascript - 在解析内部语言时抛出异常是一种好习惯吗?
- javascript - 从 onClick 事件中选择 JavaScript 对象
- azure - 如何在逻辑应用搜索查询中转义“:”?
- tensorflow - TensorFlow Eager Execution 多线程
- git - Visual Studio 2019 停止推送到 Git
- python - 基于国家频率计数的彩色地图
- python - “SocketError: [Errno 61] Connection denied” Selenium with TOR
- python - 显示默认 nginx 页面而不是应用程序
- node.js - Heroku 部署:无法构造“WebSocket”:可能无法从通过 HTTPS 加载的页面启动不安全的 WebSocket 连接
- c - C 控制到达非 void 函数的结尾