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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:45:07