exports.createTaskDataForNewDay = async function(values) {
try {
console.log("values", JSON.stringify(values))
let pool = await CreatePool() //[timestamp , requiredTimes , reward , difficulty ,taskId , uid , csn]
let query = "update userTaskData set timestamp = ?,requiredTimes=?,timesCompleted=0,reward=?,difficulty=?,state=1,taskId=?,replacedF=0,replacedC=0 where uid =? and suitCase = ?"
let resp = await pool.query(query, [values])
if (resp.changedRows > 0) {
return resp
} else return {
code: 400,
mesage: "Could not insert data ! please try again or check syntax"
}
} catch (error) {
console.error(error)
return {
code: 500,
message: error.message
}
}
}
传递给函数的“值”是一个数组的数组。每个元素保存我想要更新的不同行的占位符数据。 但我收到一个错误,即解析错误 - 语法有问题并且记录的查询是 -
sql: `update userTaskData set timestamp = (1686124176992, 1, '{\\"t\\":\\"c\\",\\"v\\":1000}', 1, 't1', '21GGZzSudOdUjKXcbVQHtFtTK772', 1), (1686124176992, 3, '{\\"t\\":\\"g\\",\\"v\\":10}', 1, 't9', '21GGZzSudOdUjKXcbVQHtFtTK772', 1), (1686124176992, 5, '{\\"t\\":\\"c\\",\\"v\\":4000}', 2, 't17', '21GGZzSudOdUjKXcbVQHtFtTK772', 1), (1686124176992, 3, '{\\"t\\":\\"c\\",\\"v\\":1000}', 3, 't21', '21GGZzSudOdUjKXcbVQHtFtTK772', 1),requiredTimes=?,timesCompleted=0,reward=?,difficulty=?,state=1,taskId=?,replacedF=0,replacedC=0 where uid =? and suitCase = ?
它将所有元素放置在第一个占位符中。它对于插入查询工作得很好。 请告诉我我做错了什么。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
也许“值”已经是一个数组,不需要包装在另一个数组中。您可以直接传递,如下:
让 resp =等待池.query(查询,值);