[英]How to use passed array in nodejs mysql query to compare with specified values?
[英]How to use an HTTP request to add varchar values to a MySQL query in NodeJS
您好,我目前正在使用 Express.js 和 Node.js 構建測試后端。 它有一個 MySQL 數據庫連接。 我想使用 Postman 將數據集 POST 到用戶列中。 所有功能都已配置,但是,我在使用 javascript 構建 MySQL 查詢運行時時遇到了問題。
郵遞員發出的我的 HTTP post 請求如上所示。
async function create(user){
const result = await db.query(
`INSERT INTO user
(username, password, fullname, type, gender, dob, address, email, contact_no)
VALUES(
${user.username},
${user.password},
${user.fullname},
${user.type},
${user.gender},
${user.dob},
${user.address},
${user.email},
${user.contact_no}
)`
);
let message = 'Error in creating the user!';
if (result.affectedRows) {
message = 'user created successfully!';
}
return {message};
}
我用來將用戶添加到數據庫的 javascript 函數如上所示。 但情況是查詢應該是
INSERT INTO user
(username, password, fullname, type, gender, dob, address, email, contact_no)
VALUES(
"Madhawa",
"asdfg",
"Madhawa_Cooray",
"CUSTOMER",
"MALE",
"2000-11-10",
"Colombo",
"madawasahasgmail.com",
"0778923476"
);
我在 Node.js 運行時得到以下 MySQL 查詢
INSERT INTO user
(username, password, fullname, type, gender, dob, address, email, contact_no)
VALUES(
Madhawa,
asdfg,
Madhawa_Cooray,
CUSTOMER,
USER,
2000-11-10,
Colombo, Dehiwala,
madawasahasgmail.com,
0778923476
)
所以我在 MySQL 上收到以下錯誤,
錯誤 1054 (42S22):“字段列表”中的未知列“Madhawa”
我應該修改代碼的哪一部分? 謝謝:)
首先,永遠不要將用戶輸入直接放在 SQL 請求中。 這是一個非常高的安全風險,使任何惡意用戶都有機會執行 SQL 注入。
根據您使用哪個包連接到數據庫,應該有一個“准備”方法來創建語句,您可以在其中放置占位符字符,例如問號,您的值將放在其中。
然后在execute
方法中,您將傳遞一個包含實際值的數組或對象。 該軟件包將確保您的輸入格式正確並且不允許發生注入。
如果您使用的是mysql
包,則有一些方法可以轉義查詢值(請參閱轉義查詢值)。 您還可以打上問號並使用db.query
的第二個參數來傳遞值。
例如,您的查詢看起來像這樣:
const result = await db.query(
"INSERT INTO user (username, password, fullname, type, gender, dob, address, email, contact_no) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", [
user.username,
user.password,
user.fullname,
user.type,
user.gender,
user.dob,
user.address,
user.email,
user.contact_no
]
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.