首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SELECT WHERE IN in node-mysql

SELECT WHERE IN in node-mysql
EN

Stack Overflow用户
提问于 2012-06-15 04:57:12
回答 6查看 10.2K关注 0票数 8

有人知道如何在node-mysql中使用SELECT WHERE IN吗?

我已经尝试了下面的代码,但我得到了以下错误消息:

代码语言:javascript
复制
'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''(`PHP`,`apache`)'' at line 1'

这是我的代码:

代码语言:javascript
复制
whereIn = '(';
for ( var i in tagArray ) {
    if ( i != tagArray.length - 1 ) {
        whereIn += "`" + tagArray[i] + "`,";    
    }else{
        whereIn += "`" + tagArray[i] + "`"; 
    }
}
whereIn += ')';

console.log(whereIn);

client.query(
    'SELECT tag_id FROM tag WHERE tag_name IN ?',
    [whereIn],
    function(err, result, fields) {
        client.destroy();

        if (err) {
            throw err;
        }

        console.log(result);

        res.redirect('/');
    }
);
EN

回答 6

Stack Overflow用户

发布于 2015-03-06 17:21:36

您必须使用IN (?)而不是IN ?

任何字符串操作都可能导致SQL注入后门。

票数 18
EN

Stack Overflow用户

发布于 2018-07-30 21:03:06

您只需要将值的tagArray传递给node-mysql,它将为您处理其余的工作:

代码语言:javascript
复制
client.query(
    'SELECT tag_id FROM tag WHERE tag_name IN (?)',
    [tagArray],
    function(err, result, fields) {
        client.destroy();

        if (err) {
            throw err;
        }

        console.log(result);

        res.redirect('/');
    }
);

有关更多信息,请参阅手册中有关如何自动转义不同值的部分:https://github.com/mysqljs/mysql#escaping-query-values

票数 3
EN

Stack Overflow用户

发布于 2012-06-15 05:02:12

你需要引用你的字符串,而不是使用反引号。

代码语言:javascript
复制
whereIn = '(';
for ( var i in tagArray ) {
    if ( i != tagArray.length - 1 ) {
        whereIn += "'" + tagArray[i] + "',";    
    }else{
        whereIn += "'" + tagArray[i] + "'"; 
    }
 }
whereIn += ')';
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11041231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档