[英]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、數組序列化(不推薦)或由聚合器划分的字符串(例如逗號)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.