首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自SQLITE查询的"Order by“结果未排序

来自SQLITE查询的"Order by“结果未排序
EN

Stack Overflow用户
提问于 2019-09-24 00:37:35
回答 1查看 212关注 0票数 0

我正在做一个网上商店的项目。我正在尝试从sqlite数据库中获取基于参数值的排序结果。我正在尝试根据"select“值对产品进行排序。

在我的app.js

代码语言:javascript
运行
复制
app.get('/sortMaleProducts', function(request, response){

    var sortValues = request.query.sortValue;

    if(sortValues == 'priceASC')
    {
        sortValues = ["man", "price", "ASC"];
    }
    else if(sortValues == 'priceDESC')
    {
        sortValues = ["man", "price", "DESC"];
    }

    db.sortMaleProducts(sortValues, function(error, clothes){
        if(error){

            console.log("Error: "+ error);
        }
        else{

            console.log(clothes)
            const model = {

                clothes
            }

            response.render("man.hbs", model)
        }
    })
})

在我的db.js

代码语言:javascript
运行
复制
exports.sortMaleProducts = function(sortValues, callback){

    const query = 'SELECT * FROM products WHERE gender = ? Order by ?, ?'

    db.all(query, sortValues, function(error, clothes){

        console.log(clothes);
        callback(error, clothes);
    })

如果我硬编码查询,如下所示:

代码语言:javascript
运行
复制
const query = 'SELECT * FROM products WHERE gender = 'man' Order by price ASC'

然后它works....But,我想使用用户输入,以便我可以重用代码..

EN

Stack Overflow用户

发布于 2019-09-24 04:57:21

如果要按列排序,则该列名称必须直接出现在查询中。您所做的工作是按照字符串'price''ASC'对结果进行排序,这两个字符串对于每一行都是相同的,因此对结果的任何顺序都进行了排序。

您也不能在查询的其他地方使用列名作为参数,比如在要返回的列中或在WHERE中。当通过将语句编译成sqlite的内部字节码来准备语句时,它们必须存在,这发生在任何参数绑定或查询执行之前。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58066727

复制
相关文章

相似问题

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