簡體   English   中英

MySql - 在一個字段中插入更多值

[英]MySql - Insert more values in one field

我想在 MYSQL 字段中插入多個值(更多類別),然后過濾它們。

router.get("/createtable", (req, res) => {
  let sql =
    "CREATE TABLE entries(id int AUTO_INCREMENT PRIMARY KEY,categories VARCHAR(255), title VARCHAR(255), kindof VARCHAR(255), image01 VARCHAR(255), image02 VARCHAR(255), image03 VARCHAR(255), website VARCHAR(255))";
  let query = connection.query(sql, (err, result) => {
    if (err) throw err;
    console.log(result);
    res.header("Access-Control-Allow-Origin", "*");
    res.send("Table created");
  });
});

創作完美。

router.post("/addentry", (req, res) => {

// I give to mysql this object:
  let entry = {
    categories: [req.body.categories], // I tried to give it as an array 
    title: req.body.title,
    kindof: req.body.kindof,
    image01: req.body.image01,
    image02: req.body.image02,
    image03: req.body.image03,
    website: req.body.website,
  };


  let sql = "INSERT INTO entries SET ?";
  let query = connection.query(sql, entry, (err, results) => {
    if (err) throw err;
    console.log(results);
    res.header("Access-Control-Allow-Origin", "*");
    res.send("Entry added to MauerApp DB");
  });
});

與一個值完美配合: 'category1' 但是當我嘗試插入更多('category1,category2')時,它會返回:

code: 'ER_OPERAND_COLUMNS',
[0]   errno: 1241,
[0]   sqlMessage: 'Operand should contain 1 column(s)',
[0]   sqlState: '21000',
[0]   index: 0,
[0]   sql: "INSERT INTO entries SET `categories` = ('clothing', 'jewerly'), `title` = '1', `kindof` = 'design', `image01` = '3', `image02` = '4', `image03` = '5', `website` = '2'"
[0] }

任何想法? 謝謝!

首先,在單列中有多個值不是一個好的設計。
閱讀https://en.wikipedia.org/wiki/First_normal_form
您應該將其拆分為兩個表:條目和類別,並在類別表中添加外鍵“id”以將其鏈接到條目; 所以你可以為同一個條目有多個類別。

如果必須在同一列中執行(不強烈推薦),則需要連接 req.body.categories 中的所有值

你要么:

  • 將您的數組類別轉換為字符串。

它可以是 json、數組序列化(不推薦)或由聚合器划分的字符串(例如逗號)。

  • 創建一個表以在條目和類別之間用作 pivot。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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