我在 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'' 附近使用正确的语法

【问题讨论】:

您的prefixcolserverid 列的类型是什么?因为您的 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)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:导入时忽略错误?

MYSQL 语法错误 LEFT JOIN

我在插入语句中遇到语法错误

我在将我的 bash 命令转换为 shell 脚本中的 shell 脚本语法错误时遇到错误

纠正我在 mysql 触发器中的语法错误

为啥我在 React JS 中遇到意外错误 [重复]