为何带query属性的cfoutput标签在Lucee中失效?
问题原因解析
你遇到的差异本质是<cfoutput>标签带query属性和不带该属性的功能完全不同:
1. 带query属性的<cfoutput>
<cfoutput query="qry">的作用是循环遍历查询结果集中的每一行数据,只有当查询返回至少1条记录时,标签内部的内容才会被执行输出。
你的查询语句是:
<cfquery name="qry" datasource="#application.db.source#" username="#application.db.user#" password="#application.db.pass#"> SELECT * FROM changemgmt.rfc WHERE rfc_id = <cfqueryparam cfsqltype="CF_SQL_INTEGER" value="0">; </cfquery>
如果数据库中不存在rfc_id = 0的记录,qry的结果集为空(RecordCount = 0),此时这个循环不会触发,内部的#qry.RecordCount#自然不会被输出,页面只会留下空行。
2. 不带query属性的<cfoutput>
单纯的<cfoutput>只是用来输出变量或静态内容,它不会依赖查询结果集是否有数据,会直接执行内部的输出逻辑。所以哪怕查询结果为空,它也会正常输出qry.RecordCount的当前值(也就是0)。
验证方式
你可以在数据库中插入一条rfc_id = 0的记录,再测试第一种写法:此时<cfoutput query="qry">会循环输出和结果行数相同次数的RecordCount值,而第二种写法只会输出一次总记录数,这样就能直观看到两者的差异。
内容的提问来源于stack exchange,提问作者Michael Buckman
相关产品推荐
相关产品推荐

