невозможно вставить динамические c строк в таблицу, используя mysql и nodejs - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь вставить массив объектов в SQL, но получаю следующую ошибку:

  code: 'ER_PARSE_ERROR',
  errno: 1064,
  sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?,?)' at line 1",
  sqlState: '42000',
  index: 0,
  sql: 'INSERT INTO orderedproducts (order_id, product_id, quantity) VALUES ((19, 10, 2),?,?)'

Это мой тестовый массив объектов

var testData = [
                  {
                     productId: 10,
                     quantity: 2
                  }
               ]

Я хочу вставить это данные объекта в sql.

Мой текущий написанный код, который возвращает ошибку выше

let lastId = results.insertId

                    let orderedProductSql = 'INSERT INTO orderedproducts (order_id, product_id, quantity) VALUES (?,?,?)'

                    var testData = [
                        {
                            productId: 10,
                            quantity: 2
                        }
                    ]

                    let values = testData.reduce((o, a) => {
                        let ini = []
                        ini.push(lastId)
                        ini.push(a.productId)
                        ini.push(a.quantity)
                        o.push(ini)
                        return o
                    }, [])

                    connection.query(orderedProductSql, [values], (err, results) => {
                        if (err) {
                            return connection.rollback(_ => {
                                throw err
                            })
                        }
                        connection.commit(err => {
                            if (err) {
                                connection.rollback(_ => {
                                    throw err
                                })
                            }
                            connection.release()
                            callBack(null, results)
                        })
                    })

Как я могу решить эту проблему ??

1 Ответ

0 голосов
/ 29 мая 2020

Попробуйте сделать что-то вроде этого:

connection.query( "INSERT INTO orderedproducts SET order_id=?, product_id=?, quantity=?" , [lastid, productid, quantity] , 
  function(err, result) {
     if(err) throw err;
     });

Вам нужно использовать SET для вставки данных в вашу mysql базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...