Next.js中INSERT Query报错:行1列数与值数不匹配求助
解决Column count doesn't match value count at row 1错误
你遇到的错误核心是SQL插入语句的占位符数量和传入的值数量不匹配:
你的INSERT语句写的是:
INSERT INTO submissions2023 (streamer, clip, category) VALUES (?)
这里只有1个占位符?,但你传入了3个值[streamer, clip, category],数据库会尝试把这3个值全部映射到第一个列streamer上,自然触发列数与值数不匹配的错误。
修复方案
把SQL语句中的占位符数量和值的数量对应起来,改成3个占位符:
import { query } from "../../lib/db"; export default async function handler(req, res) { const { streamer, clip, category } = req.body; console.log('- - - - - - -'); console.log('body: ', req.body); console.log('streamer: ', streamer); console.log('clip: ', clip); console.log('category: ', category); console.log('- - - - - - -'); if (req.method === "POST") { try { const insertSQL = await query({ query: "INSERT INTO submissions2023 (streamer, clip, category) VALUES (?,?,?)", values: [streamer, clip, category] }); res.status(200).json({ data: 'Success :' + streamer }); } catch (error) { res.status(500).json({ data: error.message }); } } }
补充说明
- 你的数据库表中
id是自增列,INSERT时不需要传入该字段,数据库会自动生成,这部分逻辑是正确的。 - 控制台已经能正常打印3个输入值,说明前端传参没有问题,问题完全出在SQL语句的占位符写法上。
内容的提问来源于stack exchange,提问作者offbloom
相关产品推荐
相关产品推荐

