我在 mysql(js) 中遇到语法错误(错误:ER_PARSE_ERROR)
Posted
技术标签:
【中文标题】我在 mysql(js) 中遇到语法错误(错误:ER_PARSE_ERROR)【英文标题】:i got a syntax err in mysql(js)(Error: ER_PARSE_ERROR) 【发布时间】:2018-12-04 09:01:28 【问题描述】:我正在做一个选项来改变每个服务器的前缀不和谐,我正在用 mysql 做它
代码:
var values =
prefixcol: arg[1],
serverid: message.guild.id
;
var sqlaa = "INSERT INTO prefix (prefixcol, serverid) VALUES ?";
con.query(sqlaa, values, function (err, result)
if (err) throw err
console.log("1 record inserted")
);
我出错了:
错误:ER_PARSE_ERROR:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '`prefixcol` = '1', `serverid` = '434013824207814706'' 附近使用正确的语法
【问题讨论】:
您的prefixcol
和serverid
列的类型是什么?因为您的 javascript 值是字符串。检查是否可以在两列中插入字符串。
不是 100% 确定 javacript,但我遇到的参数化查询的所有其他实现都需要每个参数一个占位符,并且要遵循一般子句语法。即..我希望更像INSERT INTO prefix (prefixcol, serverid) VALUES (?, ?)
【参考方案1】:
您的 SQL 语句格式不正确。对应于您的代码将是
var values =
prefixcol: arg[1],
serverid: message.guild.id
;
var sqlaa = "INSERT INTO prefix (prefixcol, serverid) VALUES (?,?)";
con.query(sqlaa, values, function (err, result)
if (err) throw err
console.log("1 record inserted")
);
那是因为你输入了 2 个值,所以你需要插入 2 个
【讨论】:
【参考方案2】:我使用node
v8.9.4 和mysql
v2.15.0 对其进行了测试,您需要将 ?带括号
var sqlaa = "INSERT INTO prefix (prefixcol, serverid) VALUES (?)";
【讨论】:
以上是关于我在 mysql(js) 中遇到语法错误(错误:ER_PARSE_ERROR)的主要内容,如果未能解决你的问题,请参考以下文章