我很难理解事先准备好的声明的执行情况。我做了大量的研究,但我发现的大部分信息要么是断章取义,要么包含的例子比我要完成的要复杂得多。有人能解释一下为什么下面第二个示例中的execute方法抛出语法错误吗?
注意:我在这里使用node-mysql2包。
controller.js(使用query 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(使用execute 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' }
1条答案
按热度按时间wwodge7n1#
与
.query()
,在客户端上处理参数替换,包括let data = req.body
在上面的例子中。与
.execute()
准备好的语句参数作为序列化字符串从客户端发送,并由服务器处理。自let data = req.body
是一个物体,那是行不通的。