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

Node.js拼接MySQL INSERT INTO语句报ER_PARSE_ERROR语法错如何解决?

问题根源

  • MySQL要求字符串类型的字段值必须用单/双引号包裹,你直接把usrname、usrpwd这类字符串变量拼接到SQL中时没有加引号,生成的SQL就变成了VALUES(Behran Meydaner, 2222...),MySQL会把Behran识别为字段名/表名,碰到后面的空格就直接报语法错误。你测试时用的密码是纯数字,MySQL可以自动识别为数值类型所以没报错,如果密码包含字母、特殊字符也会触发同样的语法错误。
  • 另外你这种直接拼接用户输入到SQL的写法存在严重的SQL注入风险,恶意用户可以构造特殊输入删库、拖走所有住户数据,绝对不能在生产环境使用。
  • 补充提醒:不要明文存储用户密码,建议用bcrypt等工具哈希加密后再存入数据库,避免数据泄露后住户密码直接暴露。

修复方案

临时修复(仅解决当前报错,不推荐生产用)

给所有字符串类型的变量外层加单引号,注意JS字符串内的单引号需要用反斜杠转义:

// 仅修改VALUES拼接行
'VALUES(\''+usrname+'\', \''+usrpwd+'\', '+usrblokno+', '+usrdaireno+', '+curryear+', '+usraidat+', ' +

这种写法如果用户名/密码本身包含单引号还是会报错,且仍存在SQL注入风险。

标准修复(推荐,自动处理转义+防注入)

使用MySQL驱动自带的参数化查询功能,不用手动拼接引号,驱动会自动处理类型匹配、特殊字符转义:

function addUser(usrname, usrpwd, usrblokno, usrdaireno, usraidat, callback) {
    var today    = new Date();
    var curryear = today.getFullYear();
    // 用?作为参数占位符
    var sql      = 'INSERT INTO havuzs_sakinleri (isim, sifre, blokno, daireno, yil, aylik_aidat, ' +
                'ay1_no, ay1_odemesi, ay2_no, ay2_odemesi, ay3_no, ay3_odemesi, ay4_no, ay4_odemesi, ' +
                'ay5_no, ay5_odemesi, ay6_no, ay6_odemesi, ay7_no, ay7_odemesi, ay8_no, ay8_odemesi, ' +
                'ay9_no, ay9_odemesi, ay10_no, ay10_odemesi, ay11_no, ay11_odemesi, ay12_no, ay12_odemesi, ' +
                'toplam_odenen_tl, devredilen_tl, aidat_bakiye) ' +
                'VALUES(?, ?, ?, ?, ?, ?, ' +
                '1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 0, 0, 0)';
    // 第二个参数传入参数数组,顺序和占位符?一一对应
    con.query( sql, [usrname, usrpwd, usrblokno, usrdaireno, curryear, usraidat], function( err, res ){
        let status_message;
        if ( err ) {
            throw err;
            status_message=('Site sakini eklenirken sorun oluştu.');
        } else {
            status_message = ("Bu kisi yeni site sakini olarak veri tabanina eklendi. Ana sayfaya dönmek için lütfen Ana sayfa butonuna tıklayınız!");
        }
        return callback( status_message );
    } );
}

内容的提问来源于stack exchange,提问作者user16617036

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:36:04