好的所以用户..。下面是一个看似不可能出错的条件语句。这很简单,然而,我不明白为什么它不能按照预期的方式工作。
<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时,不显示任何内容,窗体继续沿其路径运行。我变得非常沮丧,因为这应该是非常简单的…
发布于 2011-09-27 05:26:38
如果查询集为空,则输出不会返回任何结果。尝试:
<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"
就不是必需的。您可以简单地在<cfoutput></cfoutput>
中引用查询和变量。
编辑
以下是访问查询变量的一种方法:QueryName["ColumnName"][RowNum]
(当您希望扩展代码时,可以对查询变量做很多事情。在ColdFusion and getting data from MySQL上有很多不同的方法。)
发布于 2011-09-27 05:51:06
正如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提供的隐式布尔转换来简化代码。这确实让我更容易识别我使用的是普通的二进制选择还是更重要的二进制选择,因此在代码中导航变得更容易。
https://stackoverflow.com/questions/7561471
复制相似问题