queryExecute ColdFusion 语法与 Railo/Lucee 语法
queryExecute ColdFusion syntax vs Railo/Lucee syntax
我有一堆针对 Railo 服务器编写的代码。我们现在正尝试将部分代码移至 CF11 盒和 Lucee 盒中。
我一直这样使用 queryExecute:
rt = queryExecute(
sql = 'select *
from translation
where translationID = :translationID
and translatedStr = :translatedStr'
, params = {translationID: arguments.translationID
, translatedStr: arguments.translatedStr}
, options= {datasource: application.ds}
);
我的印象是 CF11 上的语法是相同的,但我收到一个错误:
Parameter validation error for the QUERYEXECUTE function.
A built-in ColdFusion function cannot accept an assignment statement as a parameter,
although it can accept expressions. For example, QUERYEXECUTE(d=a*b) is not acceptable.
上面的 executeQuery 在 Lucee 上运行良好。我将需要检查整个代码库并使其在 CF11 和 Lucee 上都能正常工作。
哪位更熟悉 ACF 的人可以告诉我最好的方法是什么。看来 ACF 在参数名称方面遇到了问题。如果我删除 sql =
和 params =
这会解决一些问题,尽管我喜欢将它们命名的可读性。另外,ACF 似乎不喜欢 translationID: arguments.translationID
并希望我也更改它 translationID = arguments.translationID
。在我完成所有更改的耗时过程之前,我只想确保没有遗漏任何东西。
很确定您的参数需要采用结构形式以包含值(如果您愿意,还可以包含查询参数)。
试试这个:
rt = queryExecute(
"select *
from translation
where translationID = :translationID
and translatedStr = :translatedStr",
{
translationID: {value: arguments.translationID},
translatedStr: {value: arguments.translatedStr}
},
{datasource: application.ds}
);
嗯,错误信息很清楚,不是吗?
A built-in ColdFusion function cannot accept an assignment statement
as a parameter, although it can accept expressions. For example,
QUERYEXECUTE(d=a*b) is not acceptable.
你有这个:
queryExecute(
name = value
, name = value
, name= value
)
错误消息说不允许。
您只需要删除参数的名称即可。内置的 CFML 函数不是那样工作的。这是 Lucee 中的一个兼容性错误,它 支持这个。
我有一堆针对 Railo 服务器编写的代码。我们现在正尝试将部分代码移至 CF11 盒和 Lucee 盒中。
我一直这样使用 queryExecute:
rt = queryExecute(
sql = 'select *
from translation
where translationID = :translationID
and translatedStr = :translatedStr'
, params = {translationID: arguments.translationID
, translatedStr: arguments.translatedStr}
, options= {datasource: application.ds}
);
我的印象是 CF11 上的语法是相同的,但我收到一个错误:
Parameter validation error for the QUERYEXECUTE function.
A built-in ColdFusion function cannot accept an assignment statement as a parameter,
although it can accept expressions. For example, QUERYEXECUTE(d=a*b) is not acceptable.
上面的 executeQuery 在 Lucee 上运行良好。我将需要检查整个代码库并使其在 CF11 和 Lucee 上都能正常工作。
哪位更熟悉 ACF 的人可以告诉我最好的方法是什么。看来 ACF 在参数名称方面遇到了问题。如果我删除 sql =
和 params =
这会解决一些问题,尽管我喜欢将它们命名的可读性。另外,ACF 似乎不喜欢 translationID: arguments.translationID
并希望我也更改它 translationID = arguments.translationID
。在我完成所有更改的耗时过程之前,我只想确保没有遗漏任何东西。
很确定您的参数需要采用结构形式以包含值(如果您愿意,还可以包含查询参数)。
试试这个:
rt = queryExecute(
"select *
from translation
where translationID = :translationID
and translatedStr = :translatedStr",
{
translationID: {value: arguments.translationID},
translatedStr: {value: arguments.translatedStr}
},
{datasource: application.ds}
);
嗯,错误信息很清楚,不是吗?
A built-in ColdFusion function cannot accept an assignment statement as a parameter, although it can accept expressions. For example, QUERYEXECUTE(d=a*b) is not acceptable.
你有这个:
queryExecute(
name = value
, name = value
, name= value
)
错误消息说不允许。
您只需要删除参数的名称即可。内置的 CFML 函数不是那样工作的。这是 Lucee 中的一个兼容性错误,它 支持这个。