EJS表单提交数据未传入MySQL报ER_EMPTY_QUERY错误该如何解决?
问题根因与修复方案
1. 核心语法错误(直接导致空查询报错)
你在调用conn.query方法时,SQL语句参数和后续的传值数组之间遗漏了英文逗号分隔符,JS引擎会把这段代码解析为「从SQL字符串中读取下标为[newCostumer, id]的内容」,返回的结果是undefined,相当于给数据库传入了空的SQL语句,所以直接触发ER_EMPTY_QUERY错误。
2. 修复后的控制器代码
controller.update = (req, res) => { const { id } = req.params; const newCostumer = req.body; // 调试用:可以先打印确认参数是否正常拿到 // console.log('待更新数据:', newCostumer, '客户ID:', id) req.getConnection((err, conn) => { // 这里补了SQL字符串和参数数组之间的逗号 conn.query('UPDATE customer set ? WHERE id = ?', [newCostumer, id], (err, rows) =>{ if(err) console.log(err); res.redirect('/'); }); }); };
3. 额外注意事项
- 确保你的express服务已经配置了表单解析中间件,否则
req.body会是空对象:app.use(express.urlencoded({ extended: true })) - 变量名
newCostumer属于拼写失误(正确拼写为newCustomer),但不影响代码运行,只要你customer表的字段名和表单的name、address、phone完全对应即可正常更新。
内容的提问来源于stack exchange,提问作者Dybuc
相关产品推荐
相关产品推荐

