Мне сложно понять реализацию подготовленных заявлений. Я провел немало исследований, но большая часть информации, которую я обнаружил, либо вне контекста, либо содержит примеры, гораздо более сложные, чем то, что я пытаюсь выполнить. Может кто-нибудь объяснить мне, почему метод execute во втором примере ниже выдает синтаксическую ошибку?
ПРИМЕЧАНИЕ. Я здесь использую пакет node-mysql2.
controller.js (используя запрос метод mysql)
const db = require("../lib/database");
async addNewThing(req, res, next) {
let data = req.body
const queryString = 'INSERT INTO table SET ?'
try {
await db.query(queryString, data)
res.status(201).json({
message: 'Record inserted',
data
})
} catch (error) {
next(error)
}
}
Запись успешно вставлена в базу данных
controller.js (используя выполнить метод mysql)
const db = require("../lib/database");
async addNewThing(req, res, next) {
let data = req.body
const queryString = 'INSERT INTO table SET ?'
try {
await db.execute(queryString, [data])
res.status(201).json({
message: 'Record inserted',
data
})
} catch (error) {
next(error)
}
}
Приводит к следующей ошибке:
У вас ошибка в синтаксисе SQL; проверьте руководство, которое
соответствует вашей версии сервера MySQL для правильного использования синтаксиса
возле '?' в строке 1
данные
{ thing_id: '987654', thing_name: 'thing' }