我正在使用: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;
}
只是一个猜测,尝试使用“order”以外的名称,想知道这是否是解析器扼制的关键字。 – orangepips 2011-06-02 15:10:08
你甚至可以在ORDER BY子句中使用绑定变量吗? – ale 2011-06-02 15:16:06
@orangepips @Al埃弗里特,这将是一个不!看来Al是正确的,你不能将PARAMS绑定到ORDER BY子句。 – Mohamad 2011-06-02 15:50:20