WRONG_VALUE_COUNT_ON_ROW:但是我看不出问题所在吗?



我正在尝试通过Express将数据插入MySQL,数据库表是这样创建的:

create table foods (name VARCHAR(100), typval DECIMAL(8, 2), unit VARCHAR(50), calories DECIMAL(5, 2), carbs DECIMAL(5, 2), fat DECIMAL(5,2), protein DECIMAL(5, 2), salt DECIMAL(5, 2), sugar DECIMAL(5, 2));

我有一个收集用户数据的表单,发布功能如下所示:

app.post("/addnewfood", function (req,res) {
console.log(req.body.name, req.body.typval, req.body.unit, req.body.calories, req.body.carbs, req.body.fat, req.body.protein, req.body.salt, req.body.sugar);
// saving data in database
let sqlquery = "INSERT INTO foods (name, typval, unit, calories, carbs, fat, protein, salt, sugar) VALUES (?,?)";
// execute sql query
let newrecord = [req.body.name, req.body.typval, req.body.unit, req.body.calories, req.body.carbs, req.body.fat, req.body.protein, req.body.salt, req.body.sugar];
db.query(sqlquery, newrecord, (err, result) => {
if (err) {
return console.error(err.message);
}else
res.send("New" + " " + req.body.name + " was added to the database.");
});
});

我不确定我哪里出错了,因为我数了数,我需要为 9 个不同的列填写 9 个不同的字段。我已经检查了逗号,我看不到任何不合适的东西。

当我尝试输入这样的数据时:"麦当劳汉堡,1.0,汉堡,100.00,10.00,10.00,10.00,1.0,10.00"

控制台.log打印出来很好,它应该可以工作,但是,我得到:

ER_WRONG_VALUE_COUNT_ON_ROW:列计数与第 1 行的值计数不匹配

帮助?

您的INSERT查询需要为您插入的每一列提供一个占位符。 这里只有两个占位符 - 两个?项。

VALUES (?,?)

您需要九个,每列一个。

VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)

最新更新