CF9:这个评估报告的评估是什么?

时间:2018-02-09 03:41:15

标签: coldfusion coldfusion-9 cfml cfdump

我被困住,需要一双新鲜的眼睛,请。

我正在与其他人的意大利面条代码合作,他们已经不在身边了,并且知道他们正在评估什么。

<cfset surveyCount = 0>
<cfloop query="surveys">
    <cfif evaluate("defaultReport" & ID)>
        <cfset surveyCount = surveyCount + 1>
    </cfif>
</cfloop>  

在查询转储中,我看到9条记录,这是我所期待的但是因为评估失败,所以surveyCount不会递增。我没有看到defaultReport的任何列。在我与CF合作的15年中,我总是避免评估(),现在当我需要分析它时,我完全失去了。有人可以提供任何指导吗?

添加了CFDump图像(为了隐私和安全,已删除了一些列名称): enter image description here

更新I: 这个文件有很多cfinclude语句和很少的代码格式。结果,我忽略了一些cfinclude语句。我找到了以下内容。我仍在寻找,但想在我挖掘时记录下来。

<cfloop query="surveys"> <cfscript> variables["defaultReport" & ID] = evaluate(thisAssociation & "Price"); </cfscript> </cfloop>

更新II: 转储变量范围,我确实确认了我正在寻找的变量(找到我在UPDATE中发布的查询,我也帮助了)。 :)
enter image description here

2 个答案:

答案 0 :(得分:5)

您需要在查询之外查找变量。此变量的名称为default#ID#。它可以被称为。

variables.default#ID#
form.default#ID#
url.default#ID#
request.default#ID#
attributes.default#ID#

基本上ColdFusion将遍历每个范围,直到找到某些东西。 (不,这不是一个好方法)

如果你必须清理它,我建议不要使用这种模棱两可的方法。简而言之,没有真正的方法可以知道它正在评估什么。

答案 1 :(得分:5)

他们想要做的是增加surveyCount,但前提是:evaluate("defaultReport" & ID)评估为true

从您的查询转储图片看起来ID似乎是144145等数字......

在这种情况下,您可以在evaluate("defaultReport" & ID)处考虑类似defaultReport144defaultReport145等...(这些是在代码中设置的变量)。

所以代码:

<cfif evaluate("defaultReport" & ID)>
    <cfset surveyCount = surveyCount + 1>
</cfif>

变为(ID为144,查询循环中的第一个)

<cfif defaultReport144>
    <cfset surveyCount = surveyCount + 1>
</cfif>

依此类推...其他ID

因此,请在代码中搜索defaultReport144defaultReport145等变量设置为true or false (0 or 1)的位置。

类似的东西:

<cfset defaultReport144 = true />

或者他们可能会使用一些评估为true或false的表达式,例如:

<cfset defaultReport144 = [some expression] />

如果找不到,那么可能会在设置这些defaultReport...变量的位置更改或删除代码。

ColdFusion evaluate()文档:
https://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f4e.html

相关问题