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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:57:37