【问题标题】:ColdFusion Conditional RecordCountColdFusion 条件记录计数
【发布时间】:2011-11-25 13:31:50
【问题描述】:

好的,所以用户...这是一个看似不可能出错的条件语句。这很简单,但是,我不知道为什么它不能按预期的方式工作。

<cfoutput query="checkForAd">
        <!--- also used the line <cfif RecordCount eq 0> --->
    <cfif checkForAd.RecordCount eq 0>
        <!--- Display some message. (Perhaps using a table, undecided) --->
    <cfelse>
        <!--- Display some other message. (Happens to be a table) --->
    </cfif>
</cfoutput>

当 RecordCount 返回大于 0 的数字时,else 情况会正确显示。当 RecordCount 返回 0 时,不显示任何内容,并且表单继续沿其路径前进。我变得非常沮丧,因为这应该很简单......

【问题讨论】:

    标签: coldfusion conditional


    【解决方案1】:

    如果查询集为空,则输出不会返回任何结果。试试:

    <cfif checkForAd.RecordCount eq 0>
        <!--- Display some message. (Perhaps using a table, undecided) --->
    <cfelse>
        <cfoutput query="checkForAd">
            <!--- Display some other message. (Happens to be a table) --->
        </cfoutput>
    </cfif>
    

    我假设您希望返回多条记录...如果您只返回一条,则不需要 query="checkForAd"。您可以简单地在 &lt;cfoutput&gt;&lt;/cfoutput&gt; 中引用查询和变量。

    编辑

    这是访问查询变量的一种方法:QueryName["ColumnName"][RowNum]

    (当您希望扩展您的编码时,您可以使用查询变量做很多事情。ColdFusion and getting data from MySQL 对不同方法进行了很好的概述)

    【讨论】:

    • 非常感谢。我实际上只返回了一张唱片,但是我对 ColdFusion 以及一般的生产开发还是很陌生。感谢您的另一个提示。 :)
    • 我很高兴...随时接受答案。这将有助于解决未来的问题。
    • 我会的,我只是在等待接受一个的时间限制。
    • 酷,谢谢。顺便说一句,我刚刚在编辑上发帖,为您指明访问查询变量的正确方向。
    • 值得指出的是,RowNum 通常默认为 1,因此您可以简单地使用 QueryName["ColumnName"](如果列名中没有特殊字符,也可以使用 QueryName.ColumnName)。尽管还请注意,如果您已循环查询(或正在添加新记录),则第 num 行将是 last 记录而不是第一个记录。
    【解决方案2】:

    正如 nykash 所指出的,如果没有记录,cfoutput query(或 cfloop query)的主体永远不会执行,因此在一个内部检查零记录计数永远不会是真的。

    但是,我发现以下示例更具可读性:

    <cfif NOT checkForAd.RecordCount >
        <!--- Display some message. --->
    </cfif>
    
    <cfoutput query="checkForAd">
            <!--- loop through data --->
    </cfoutput>
    

    它可能看起来不是很孤立,但我认为它更清晰,更容易看到发生了什么,尤其是与其他代码结合使用时。

    特别是在 RecordCount 检查中,如果我关心具体数字,那么我将使用 EQ(或 NEQ/GT/etc),但如果我只关心“有记录”与“没有记录”,那么我使用CFML 提供的用于简化代码的隐式布尔转换。这确实让我更容易识别我何时使用常见的二进制选择或更重要的选择,因此浏览代码更容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 2012-04-01
      • 1970-01-01
      相关资源
      最近更新 更多