查询参数的行为不符合预期



我正在使用:order查询参数将订单参数传递给我的函数。不幸的是,这似乎对产出没有影响。

请求调试输出显示order参数解析正确:

Parameter #2(cf_sql_varchar) = posts.createdAt ASC

然而,它仍然对产出没有影响。如果我对参数(ORDER BY ..., #arguments.order#)进行硬编码,它可以正常工作。

有什么想法吗?

public any function getPost(required numeric postId, string order)
{
    switch(arguments.order)
    {
        case "new":
            arguments.order = "posts.createdAt DESC";
            break;
        case "old": 
            arguments.order = "posts.createdAt ASC";
            break;
        default:
            arguments.order = "posts.score DESC";
    }
    local.post = new Query(dataSource=variables.wheels.class.connection.datasource);
    local.post.setSql("
        SELECT *
        FROM
        WHERE posts.id = :postId OR posts.parentId = :postId
        ORDER BY posts.postTypeId ASC, :order"
    );
    local.post.addParam(name="postId", cfsqltype="cf_sql_integer", value=arguments.postId, maxlength=10);
    local.post.addParam(name="order", cfsqltype="cf_sql_varchar", value=arguments.order, maxlength=20);
    local.post = local.post.execute().getResult();
    return local.post;

}

如果我没记错的话,queryparams除了在where子句中之外,在任何地方都不起作用。所以你处理的不是一个bug,而是一个限制。

相关内容

  • 没有找到相关文章

最新更新