首页 > 解决方案 > 我如何以一种可以接受的方式为 sql 编写“?%”?

问题描述

    Search(request,respond){
        var name =request.params.name;
        var sql = "SELECT * FROM search.items WHERE name LIKE '?%'";
        db.query(sql,name,function(error,result){
            if(error){
                throw error;
            }
            else{
                respond.json(result);
            }
        });
    }

我不太确定这个问题,但我认为 '?%' 被视为一个字符串我如何写 '?%' 没有?被视为一个字符串,但一个值将被用户输入替换为名称?

标签: mysql

解决方案


将通配符放在参数上,而不是放在 SQL 字符串中。

Search(request,respond){
    var name =request.params.name;
    var sql = "SELECT * FROM search.items WHERE name LIKE ?";
    db.query(sql,'%'+name+'%',function(error,result){
        if(error){
            throw error;
        }
        else{
            respond.json(result);
        }
    });
}

推荐阅读