【发布时间】:2019-03-14 02:30:55
【问题描述】:
美好的一天! 我正在尝试使用 API 通过 url 将对象数组发送到我的 MySql 数据库。
这是我的 API 上的代码:
app.get("/orderdetails/add", (req, res) => {
const {
item__,
Qty_Ordered,
Unit_Price,
Ext_Price
} = req.query;
const INSERT_ORDERDETAILS_QUERY = `INSERT INTO oe_details (item__,
Qty_Ordered, Unit_Price, Ext_Price) VALUES('${item__}', '${Qty_Ordered}',
'${Unit_Price}', '${Ext_Price}')`;
connection1.query(INSERT_ORDERDETAILS_QUERY, (err, results) => {
if (err) {
return res.send(err);
} else {
return res.send("successfully added order details");
}
});
});
以下是我的应用程序上的功能:
addOrderDetails = _ => {
const o = this.props.o;
const summary = o.filter(function(obj) {
return obj.Quantity >= 1;
});
var url = "";
summary.forEach(function(e) {
url +=
"item__=" +
e.ExternalID +
"&Qty_Ordered=" +
e.Quantity +
"&Unit_Price=" +
e.Price +
"&Ext_Price=" +
e.ExtPrice +
"&";
});
url = url.trim("&");
fetch(`http://localhost:4000/orderdetails/add?${url}`).catch(err =>
console.error(err)
);
};
当我运行 addOrderDetails 时,我最终将以下语句发送到 MySql:
INSERT INTO oe_details (item__, Qty_Ordered, Unit_Price, Ext_Price)
VALUES('B-2080,B-2081', '8,5', '18.75,18.75', '150,93.75')
这是错的...有没有办法让我使用相同的概念向 mysql 数据库添加多行?
如果我只有 1 行要添加,它可以正常工作...
我们将不胜感激!
谢谢,
【问题讨论】:
-
编辑:o 是一个对象数组
-
我只想指出这是危险的,而且安全性不好。假设您没有检查后端以防止这些攻击,这很容易使您容易受到 SQL 注入攻击和其他攻击。您应该只通过后端传递值并在后端获取值并在那里构建 SQL 语句。这样,您可以在执行语句之前检查值以进行验证。作为回报,提高您的安全性。
标签: javascript mysql api express url