簡體   English   中英

如何使用 HTTP 請求將 varchar 值添加到 NodeJS 中的 MySQL 查詢

[英]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 請求

郵遞員發出的我的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM