Node.js+Express连接MySQL时POST请求失效问题求助
问题解决思路
1. 修复SQL语句语法错误
你的INSERT语句存在两处致命语法问题:
- 列名错误使用单引号
':MySQL中列名需用**反引号``**包裹(或省略,只要列名不是关键字),单引号仅用于包裹字符串值。 - 列名列表未闭合:INSERT语法要求列名列表用括号包裹后再跟VALUES关键字,你的代码漏掉了列名后的闭合括号
)。
修正后的SQL语句:
const q = "INSERT INTO stage4.TOURIST (`Fname`, `Lname`, `Tourist_ID`, `age`, `gender`, `email`, `nationality`) VALUES (?, ?, ?, ?, ?, ?, ?)";
2. 修正参数绑定逻辑
你当前将values数组嵌套在另一个数组[values]中传递给db.query,会导致参数与SQL占位符数量不匹配(变成二维数组)。直接传递values数组即可:
db.query(q, values, (err, data) => { if (err) return res.json("SQL执行错误: " + err.message); // 返回具体错误信息便于排查 return res.json("数据插入成功") })
3. 排查路由匹配问题
虽然你返回的是自定义错误,但仍需确认:
- 后端是否正确定义了POST路由(比如
app.post('/your-endpoint', ...)) - Postman请求的URL是否与后端路由完全匹配(注意路径、端口、是否存在前缀)
4. 输出具体错误信息
建议替换模糊的"404 error",返回err的具体内容,这样能直接定位SQL执行失败的原因,比如:
if (err) return res.json({ status: "fail", detail: err.message });
内容的提问来源于stack exchange,提问作者May
相关产品推荐
相关产品推荐

