在mysql查询中使用参数时出现mysql语法错误

Posted

技术标签:

【中文标题】在mysql查询中使用参数时出现mysql语法错误【英文标题】:getting mysql syntax error while using parameters in mysql query 【发布时间】:2022-01-20 03:51:19 【问题描述】:

nodejs中出现sql语法错误

我正在使用此代码:

async function getNotificationFsql(data) 
    var query = "select * from notifications where id>$data.start and receiver=$data.recId limit 10";
    var record = await db.sequelize.query(query ,
        function (err,results) 
            if (err) 
                console.log('Error while getting data from mysql     :-   ' + err);
             else 
                console.log('Notifications data which we got from MYSQL     :-   ' + results);
            
        
    );
    // console.log(record);
    console.log('Notifications      :-   ' + record[0]);
    return record[0];
;

我得到了:

代码:'ER_PARSE_ERROR', 错误号:1064, sqlState: '42000',

sqlMessage:“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 'data.start 和 receiver=$data.recId limit 10' 附近使用的正确语法在第 1 行",

sql: 'select * from notifications where id>$data.start and receiver=$data.recId limit 10', 参数:未定义 , sql: 'select * from notifications where id>$data.start and receiver=$data.recId limit 10', 参数:未定义

我做错了什么?

【问题讨论】:

你没有用明确的值替换占位符。 不要使用字符串替换构建查询,使用参数化查询。 【参考方案1】:

对不起,我做错了

我这样做解决了这个错误:

var query = "select * from notifications where id>"+data.start+" and receiver="+data.recId+" limit 10";

【讨论】:

此代码可免费用于 SQL 注入...

以上是关于在mysql查询中使用参数时出现mysql语法错误的主要内容,如果未能解决你的问题,请参考以下文章

在 MYSQL 中声明 FOREIGN KEYS 时出现语法错误(使用 innoDB)

在 PHP 中插入 MySQL 表时出现语法错误 [重复]

创建函数时出现“MySQL语法错误”[关闭]

查询 MySql 视图时出现 SQLGrammar 错误

在MySQL数据库中使用多个WHERE子句值更新多个列值时出现错误。

尝试编写 MySQL 触发器以替换 phpmyadmin 上的 CHECK 约束时出现语法错误