错误: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 语法有错误;的主要内容,如果未能解决你的问题,请参考以下文章

使用 ?在 sql create '' around 参数

我在 mysql(js) 中遇到语法错误(错误:ER_PARSE_ERROR)

NodeJs Mysql 错误:ER_PARSE_ERROR 插入多个表

我的 discord.js xp 机器人中的 ER_PARSE_ERROR 错误

我的 SQL 错误:错误 1064:您的 SQL 语法有错误;

SQL 语法错误:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册