字符串化的 JSON 数据不会插入到 mySQL 中(已验证的 json 格式)

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

我无法将 JSON 字符串插入 mySQL 表中。

CREATE TABLE registered (
    id int NOT NULL AUTO_INCREMENT,
    name nvarchar(128) NOT NULL,
    panels JSON NOT NULL,
    PRIMARY KEY (id)
);
app.post("/registered", (req, res) => {
  let data = req.body;
  let sqlPost = `INSERT INTO registered (name, panels) VALUES ("${data.name}", "${data.panels}")`;
  db.query(sqlPost, (error, result) => {
    if (error) return res.json(error);
    res.send({
      message: "Registered.",
    });
  });
});

${data.panels}
看起来像
{"panels":["uti","wound"]}
。我验证了 JSON 格式。

我收到的错误如下。

code: "ER_PARSE_ERROR"
errno: 1064
sql: "INSERT INTO registered \n (name, panels) \n VALUES (\"safas\", \"{\"panels\":[\"uti\",\"wound\"]}\")"
sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'panels\":[\"uti\",\"wound\"]}\",' at line 3"
sqlState: "42000"

我已经在这个问题上折腾太久了。这里到底出了什么问题?

我尝试去掉 ${data.panels} 周围的双引号。我验证了 json。

mysql node.js json express
1个回答
0
投票

我并没有真正研究过这个文档,但我在 stackoverflow 上发现了一个 类似的问题 可能会解决你的问题。我的猜测是,在插入 JSON 值时,您需要在 JSON 值周围添加单引号

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