我之前没有接触过ColdFusion,被要求调查一个ColdFusion应用程序中的一些奇怪的间歇性错误。
在阅读有关作用域的信息后,我认为问题是因为我的CFC函数中没有使用var
关键字的变量,并且相同的变量名在各个函数中都被使用。因此,我理解这些变量是在页面级别上具有作用域的,调用这些函数的不同线程将覆盖该变量,从而导致“奇怪”的问题。
我的问题是,正确的方法是什么?
<cfset var listCount = 0>
<cfquery name="qGetElementsByType" dbtype="query" maxrows="#arguments.num_to_return#">
SELECT elementId,
title, PIhtml, Rerhtml,
text, url, image, Rank, isPoll, pollId, subjectId
FROM arguments.element_query
WHERE <cfloop list="#arguments.element_type_id#" index="lcv">
<cfif listCount GT 0>
OR
</cfif>
subjectid = #lcv#
<cfset listCount = listCount + 1>
</cfloop>
</cfquery>
每次设置listCount变量时,var
需要添加吗?还是只在初始声明时添加?
WHERE subjectid IN (<cfqueryparam value="#arguments.element_type_id#" cfsqltype="cf_sql_integer" list="true">)
。 - Leigh