You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js拼接MySQL插入语句报ER_PARSE_ERROR语法错误问题咨询

问题根因

  • MySQL要求插入的字符串类型字段值必须用引号包裹,你当前的代码直接拼接字符串类型的用户名、邮箱、密码,最终生成的SQL没有给值加引号,导致语法解析报错ER_PARSE_ERROR
  • 手动拼接SQL的方式存在极高的SQL注入风险,属于不安全的编码方式,不建议使用

修复方案

直接使用Node.js MySQL模块自带的占位符?能力,模块会自动处理值的转义、引号包裹逻辑,完全规避语法问题和注入风险,修复后代码如下:

let sql2 = 'insert into users (username,email,password) values (?,?,?)'
// 第二个参数传入和占位符顺序对应的参数数组即可
db.query(sql2, [user.username, user.email, user.password], (err, result) => {
    if(err) throw err 
    res.send('User registriation done')
})

如果你一定要手动拼接SQL(仅做原理演示,生产环境严禁使用),需要手动给每个字符串值外侧加单引号,同时转义内容中的特殊字符,写法参考:

let sql2 = 'insert into users (username,email,password) values (\'' + user.username + '\',\'' + user.email + '\',\'' + user.password + '\')'

内容的提问来源于stack exchange,提问作者amro3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:12:03