Node.js中使用MySQL库出现ER_PARSE_ERROR(1064)语法错误求助
Node.js MySQL插入语句语法错误修复
问题根源
- 字段标识符格式错误:SQL语句中
date字段用了单引号'date',MySQL要求字段名必须用反引号`包裹,单引号仅用于字符串值。 - SQL语句多余括号:定义查询语句
q时,字符串末尾多了一个闭合括号),直接破坏了SQL语法结构。
修复后的代码
export const addPost = (req, res) => { const token = req.cookies.access_token; if (!token) return res.status(401).json("Unauthorized"); jwt.verify(token, "jwtkey", (err, userInfo) => { if (err) return res.status(403).send("Unauthorized"); // 修正字段引号并移除多余括号 const q = "INSERT INTO posts(`title`, `desc`, `img`, `cat`, `date`, `uid`) VALUES (?)"; const values = [ req.body.title, req.body.desc, req.body.img, req.body.cat, req.body.date, userInfo.id, ]; db.query(q, [values], (err, data) => { if (err) return res.status(500).json(err); return res.status(200).json("Post has been created."); }); }); };
错误解析
从报错信息可以看到,MySQL解析到'date'时触发语法错误,同时因为原语句末尾的多余括号,导致VALUES部分的参数绑定格式混乱(最终SQL中VALUES后没有包裹参数的括号)。修复上述两个问题后,参数绑定会正常生成带括号的VALUES子句,符合MySQL语法规范。
内容的提问来源于stack exchange,提问作者robokonk
相关产品推荐
相关产品推荐

