代码之家  ›  专栏  ›  技术社区  ›  Ancesteral

从post方法插入多个数组

  •  -1
  • Ancesteral  · 技术社区  · 7 年前

    我正在尝试从postman获取post数据,postman是多个数据数组,但似乎无法将它们放入数据库,如果我对post上的数组进行硬编码,它将进入数据库,但不是动态的。

    索引.js

    /* POST home page. */
    router.post('/', function (req, res) {
        const sql = require('../models/db.js');
    
        let data = req.param('data');
        console.log(data);
    
        const sqlstatement = "INSERT INTO Sales (user_id, type, amount) VALUES (?)";
    
        sql.query(sqlstatement, [data], function (err, res) {
    
            if(err) {
                console.log("error: ", err);
            }
            else{
                console.log(res.insertId);
            }
        });
    
        res.send(data);
    
    });
    

    数据库

    
    
    'user strict';
    
    const mysql = require('mysql');
    
    //local mysql db connection
    let connection = mysql.createConnection({
        host     : 'localhost',
        user     : 'root',
        password : '',
        database : 'api'
    });
    
    connection.connect(function(err) {
        if (err) throw err;
    });
    
    module.exports = connection;
    
    

    [{"key":"data","value":"[[111, 'net', 1234],[111, 'gross', 1234]]\n","description":"","type":"text","enabled":true}]
    

    控制台错误

    
    code: 'ER_BAD_FIELD_ERROR',
      errno: 1054,
      sqlMessage:
       "Unknown column '[[111, 'net', 1234],[111, 'gross', 1234]]' in 'field list'",
      sqlState: '42S22',
      index: 0,
      sql:
       "INSERT INTO Sales (user_id, type, amount) VALUES (`[[111, 'net', 1234],[111, 'gross', 1234]]`)" }
    
    0 回复  |  直到 7 年前
        1
  •  0
  •   trizin    7 年前
    const sqlstatement = "INSERT INTO Sales (user_id, type, amount) VALUES (?,?,?)"
    

    你必须给每一列打个问号。

        2
  •  0
  •   showdev    7 年前

    准备正确的SQL语句

    INSERT INTO Sales (user_id, type, amount) VALUES (111, 'net', 1234),(111, 'gross', 1234);
    
    推荐文章