出于代码增强目的,我们会将所有isDefined()
次来电转换为structKeyExists()
。我需要知道的几件事情是:
我们如何在structKeyExists()
中定义查询?例如:
<cfquery name="getname" datasource="dsn">select * from table</cfquery>
<cfif isDefined('getname') and getname.recordcount neq "">Do this</cfif>
由于没有为isDefined()
定义范围,我们应该在structkeyExists()
使用什么范围?
答案 0 :(得分:12)
默认范围是变量,因此StructKeyExists(variables,"getname")
会为您执行检查。
但是,除非上面的示例中缺少逻辑,否则您不需要isDefined / StructKeyExists检查,因为如果您运行查询,它将始终被定义,只是没有行存在,所以您的第二次检查getname.recordcount
就足够了。
答案 1 :(得分:0)
这是一个较老的问题,但对于子孙后代。
<cfquery name="getname" datasource="dsn">
select * from table
</cfquery>
<cfif getname.recordcount>Do this</cfif>
cfif
getname.recordcount
用作布尔检查。如果结果集没有带来任何结果,那么它将失败...如果它带回的记录比满足布尔检查的记录要好。
扩展。假设我们正在选择一个特定字段,如id
,我们希望为这两种情况提供输出:
看起来像这样:
<cfquery name="getname" datasource="dsn">
select id from table
</cfquery>
<cfif getname.recordcount>
<cfoutput query="getname">
#id#<br>
</cfoutput>
<cfelse>
No records found.
</cfif>