错误:ER_PARSE_ERROR:您的 SQL 语法有错误;
Posted
技术标签:
【中文标题】错误:ER_PARSE_ERROR:您的 SQL 语法有错误;【英文标题】:Error: ER_PARSE_ERROR: You have an error in your SQL syntax; 【发布时间】:2018-08-29 08:49:39 【问题描述】:我正在尝试在 nodejs 中使用 mysql 插入 values
。我已经编写了以下代码并通过 npm 安装了 MySQL 支持,但由于这个问题无法插入表。
我的代码;
var mysql = require('mysql');
var values=randomValueHex(8);
var sql = "INSERT INTO `activationkeys`(`activationKey`, `productId`)
VALUES ( values ,'3')";
con.query(sql, function (err, result)
if (err) throw err;
console.log("1 record inserted");
);
我在终端上的错误:
查看与您的 MySQL 服务器版本相对应的手册,了解在 ''3')' 附近使用的正确语法
我该如何解决这个问题?
【问题讨论】:
您的 SQL 查询无效。 dev.mysql.com/doc/refman/5.7/en/insert.html 在错误处理之前执行 console.log(this.sql) 并在日志中查看正在执行的查询是什么values
是 MySQL 关键字。您可能想要sql = "... VALUES(" + values + ", '3')"
,但您最好使用准备好的语句。在当前状态下,您的代码容易受到 SQL 注入的攻击。
我总是使用sequelize
在节点中处理数据库:docs.sequelizejs.com - 试试看:)
【参考方案1】:
为什么要为列名使用反引号?我们不需要在列名中使用它。您可以通过在列值上使用 +
运算符来简单地创建动态 sql 查询,如下所示:
var sql = "INSERT INTO activationkeys (activationKey, productId) VALUES ( " + values + " ,'3')";
【讨论】:
【参考方案2】:代替
var sql = "INSERT INTO `activationkeys`(`activationKey`, `productId`)
VALUES ( values ,'3')";
请试试这个
var sql = "INSERT INTO `activationkeys`(`activationKey`, `productId`)
VALUES ( " + values + " ,'3')";
提供的值是一个字符串
【讨论】:
【参考方案3】:values
目前与您在 SQL 查询中使用它的方式不同。
values
是什么?是整数还是字符串?
不过,您需要在字符串中连接 values 变量。
var sql = "INSERT INTO `activationkeys`(`activationKey`, `productId`) VALUES (" + values + ",'3')";
【讨论】:
"Is it an integer?" -- No! "Is it a string?" -- No! -- It is a keyword! ;-) 为什么要投反对票?我的回答和其他的基本一样,只是有更多的细节。请启发我。 @axiac 我的意思是values
JS 变量,而不是括号前的 VALUES。
我没有投反对票。我只是喜欢你的反问,并把它们变成了一个有趣的评论(我希望如此)。【参考方案4】:
还有一个更正 values
变量必须像这样 '" + values + "'
。这是定义为变量的最正确方法。否则你给出这样的" + values + "
,你可能会遇到这样的错误Error: ER_BAD_FIELD_ERROR: Unknown column 'xxxxxx' in 'field list'
。我的代码是
var sql = "INSERT INTO `activationkeys`(`activationKey`, `productId`) VALUES ( '" + values + "' , 3 )";
【讨论】:
以上是关于错误:ER_PARSE_ERROR:您的 SQL 语法有错误;的主要内容,如果未能解决你的问题,请参考以下文章
我在 mysql(js) 中遇到语法错误(错误:ER_PARSE_ERROR)
NodeJs Mysql 错误:ER_PARSE_ERROR 插入多个表
我的 discord.js xp 机器人中的 ER_PARSE_ERROR 错误